ensure xer encode yields the same number of bytes as it sends to the callback
diff --git a/skeletons/constr_SET.c b/skeletons/constr_SET.c
index deff98f..70fb271 100644
--- a/skeletons/constr_SET.c
+++ b/skeletons/constr_SET.c
@@ -869,10 +869,9 @@
 		tmper = elm->type->op->xer_encoder(elm->type, memb_ptr,
 				ilevel + 1, flags, cb, app_key);
 		if(tmper.encoded == -1) return tmper;
+		er.encoded += tmper.encoded;
 
 		ASN__CALLBACK3("</", 2, mname, mlen, ">", 1);
-
-		er.encoded += 5 + (2 * mlen) + tmper.encoded;
 	}
 
 	if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1);