diff --git a/skeletons/INTEGER.c b/skeletons/INTEGER.c
index 2579153..e4e52d4 100644
--- a/skeletons/INTEGER.c
+++ b/skeletons/INTEGER.c
@@ -6,7 +6,6 @@
 #include <asn_internal.h>
 #include <INTEGER.h>
 #include <asn_codecs_prim.h>	/* Encoder and decoder of a primitive type */
-#include <assert.h>
 #include <errno.h>
 
 /*
@@ -93,8 +92,7 @@
 	return der_encode_primitive(td, sptr, tag_mode, tag, cb, app_key);
 }
 
-static const asn_INTEGER_enum_map_t *INTEGER__map_value2enum(asn_INTEGER_specifics_t *specs, long value);
-static const asn_INTEGER_enum_map_t *INTEGER__map_enum2value(asn_INTEGER_specifics_t *specs, const char *lstart, const char *lstop);
+static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value(asn_INTEGER_specifics_t *specs, const char *lstart, const char *lstop);
 
 /*
  * INTEGER specific human-readable output.
@@ -139,7 +137,7 @@
 				accum = (accum << 8) | *buf;
 		}
 
-		el = INTEGER__map_value2enum(specs, accum);
+		el = INTEGER_map_value2enum(specs, accum);
 		if(el) {
 			scrsize = el->enum_len + 32;
 			scr = (char *)alloca(scrsize);
@@ -240,7 +238,7 @@
 }
 
 static const asn_INTEGER_enum_map_t *
-INTEGER__map_enum2value(asn_INTEGER_specifics_t *specs, const char *lstart, const char *lstop) {
+INTEGER_map_enum2value(asn_INTEGER_specifics_t *specs, const char *lstart, const char *lstop) {
 	asn_INTEGER_enum_map_t *el_found;
 	int count = specs ? specs->map_count : 0;
 	struct e2v_key key;
@@ -287,8 +285,8 @@
 	else return 1;
 }
 
-static const asn_INTEGER_enum_map_t *
-INTEGER__map_value2enum(asn_INTEGER_specifics_t *specs, long value) {
+const asn_INTEGER_enum_map_t *
+INTEGER_map_value2enum(asn_INTEGER_specifics_t *specs, long value) {
 	int count = specs ? specs->map_count : 0;
 	if(!count) return 0;
 	return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum,
@@ -366,7 +364,7 @@
 		case 0x3c:	/* '<' */
 			if(state == ST_SKIPSPACE) {
 				const asn_INTEGER_enum_map_t *el;
-				el = INTEGER__map_enum2value(
+				el = INTEGER_map_enum2value(
 					(asn_INTEGER_specifics_t *)
 					td->specifics, lstart, lstop);
 				if(el) {
diff --git a/skeletons/NativeEnumerated.c b/skeletons/NativeEnumerated.c
index 8a52485..fb77e06 100644
--- a/skeletons/NativeEnumerated.c
+++ b/skeletons/NativeEnumerated.c
@@ -27,7 +27,7 @@
 	NativeInteger_decode_ber,
 	NativeInteger_encode_der,
 	NativeInteger_decode_xer,
-	NativeInteger_encode_xer,
+	NativeEnumerated_encode_xer,
 	0, /* Use generic outmost tag fetcher */
 	asn_DEF_NativeEnumerated_tags,
 	sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]),
@@ -37,3 +37,35 @@
 	0	/* No specifics */
 };
 
+asn_enc_rval_t
+NativeEnumerated_encode_xer(asn_TYPE_descriptor_t *td, void *sptr,
+        int ilevel, enum xer_encoder_flags_e flags,
+                asn_app_consume_bytes_f *cb, void *app_key) {
+	asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics;
+        asn_enc_rval_t er;
+        const long *native = (const long *)sptr;
+	const asn_INTEGER_enum_map_t *el;
+
+        (void)ilevel;
+        (void)flags;
+
+        if(!native) _ASN_ENCODE_FAILED;
+
+	el = INTEGER_map_value2enum(specs, *native);
+	if(el) {
+		size_t srcsize = el->enum_len + 5;
+		char *src = (char *)alloca(srcsize);
+
+		er.encoded = snprintf(src, srcsize, "<%s/>", el->enum_name);
+		assert(er.encoded > 0 && (size_t)er.encoded < srcsize);
+		if(cb(src, er.encoded, app_key) < 0) _ASN_ENCODE_FAILED;
+		return er;
+	} else {
+		ASN_DEBUG("ASN.1 forbids dealing with "
+			"unknown value of ENUMERATED type");
+		_ASN_ENCODE_FAILED;
+	}
+
+        return er;
+}
+
diff --git a/skeletons/NativeEnumerated.h b/skeletons/NativeEnumerated.h
index 2e6e1d0..16f1bfd 100644
--- a/skeletons/NativeEnumerated.h
+++ b/skeletons/NativeEnumerated.h
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2004 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Copyright (c) 2004, 2005 Lev Walkin <vlm@lionet.info>. All rights reserved.
  * Redistribution and modifications are permitted subject to BSD license.
  */
 /*
@@ -16,4 +16,6 @@
 
 extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated;
 
+xer_type_encoder_f NativeEnumerated_encode_xer;
+
 #endif	/* _NativeEnumerated_H_ */
