retain DEFAULT encoding in XER output (std)
diff --git a/skeletons/constr_SEQUENCE.c b/skeletons/constr_SEQUENCE.c
index 651a22b..2924823 100644
--- a/skeletons/constr_SEQUENCE.c
+++ b/skeletons/constr_SEQUENCE.c
@@ -536,7 +536,7 @@
 		if(elm->flags & ATF_POINTER) {
 			memb_ptr2 = (void **)((char *)sptr + elm->memb_offset);
 			if(!*memb_ptr2) {
-				ASN_DEBUG("Element %s %d not present",
+				ASN_DEBUG("Element %s %zu not present",
 					elm->name, edx);
 				if(elm->optional)
 					continue;
@@ -874,59 +874,70 @@
 }
 
 asn_enc_rval_t
-SEQUENCE_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_enc_rval_t er;
-	int xcan = (flags & XER_F_CANONICAL);
+SEQUENCE_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_enc_rval_t er;
+    int xcan = (flags & XER_F_CANONICAL);
+    asn_TYPE_descriptor_t *tmp_def_val_td = 0;
+    void *tmp_def_val = 0;
 	size_t edx;
 
-	if(!sptr)
-		ASN__ENCODE_FAILED;
+    if(!sptr) ASN__ENCODE_FAILED;
 
-	er.encoded = 0;
+    er.encoded = 0;
 
-	for(edx = 0; edx < td->elements_count; edx++) {
-		asn_enc_rval_t tmper;
-		asn_TYPE_member_t *elm = &td->elements[edx];
-		void *memb_ptr;
-		const char *mname = elm->name;
-		unsigned int mlen = strlen(mname);
+    for(edx = 0; edx < td->elements_count; edx++) {
+        asn_enc_rval_t tmper;
+        asn_TYPE_member_t *elm = &td->elements[edx];
+        void *memb_ptr;
+        const char *mname = elm->name;
+        unsigned int mlen = strlen(mname);
 
-		if(elm->flags & ATF_POINTER) {
-			memb_ptr = *(void **)((char *)sptr + elm->memb_offset);
-			if(!memb_ptr) {
-				if(elm->optional)
-					continue;
-				/* Mandatory element is missing */
-				ASN__ENCODE_FAILED;
-			}
-		} else {
-			memb_ptr = (void *)((char *)sptr + elm->memb_offset);
-		}
+        if(elm->flags & ATF_POINTER) {
+            memb_ptr = *(void **)((char *)sptr + elm->memb_offset);
+            if(!memb_ptr) {
+                assert(tmp_def_val == 0);
+                if(elm->default_value) {
+                    if(elm->default_value(1, &tmp_def_val)) {
+                        ASN__ENCODE_FAILED;
+                    } else {
+                        memb_ptr = tmp_def_val;
+                        tmp_def_val_td = elm->type;
+                    }
+                } else if(elm->optional) {
+                    continue;
+                } else {
+                    /* Mandatory element is missing */
+                    ASN__ENCODE_FAILED;
+                }
+            }
+        } else {
+            memb_ptr = (void *)((char *)sptr + elm->memb_offset);
+        }
 
-		/*
-		 * X.693 (0112) #9.5.
-		 * TODO: Default values' encodings shall always be present.
-		 */
+        if(!xcan) ASN__TEXT_INDENT(1, ilevel);
+        ASN__CALLBACK3("<", 1, mname, mlen, ">", 1);
 
-		if(!xcan) ASN__TEXT_INDENT(1, ilevel);
-		ASN__CALLBACK3("<", 1, mname, mlen, ">", 1);
+        /* Print the member itself */
+        tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1,
+                                           flags, cb, app_key);
+        if(tmp_def_val) {
+            ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val);
+            tmp_def_val = 0;
+        }
+        if(tmper.encoded == -1) return tmper;
 
-		/* Print the member itself */
-		tmper = elm->type->op->xer_encoder(elm->type, memb_ptr,
-			ilevel + 1, flags, cb, app_key);
-		if(tmper.encoded == -1) return tmper;
+        ASN__CALLBACK3("</", 2, mname, mlen, ">", 1);
+        er.encoded += 5 + (2 * mlen) + tmper.encoded;
+    }
 
-		ASN__CALLBACK3("</", 2, mname, mlen, ">", 1);
-		er.encoded += 5 + (2 * mlen) + tmper.encoded;
-	}
+    if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1);
 
-	if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1);
-
-	ASN__ENCODED_OK(er);
+    ASN__ENCODED_OK(er);
 cb_failed:
-	ASN__ENCODE_FAILED;
+    if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val);
+    ASN__ENCODE_FAILED;
 }
 
 int