diff --git a/skeletons/constr_SET.c b/skeletons/constr_SET.c
index a64c2ff48f2abac4fb89be7ac72127481459c4f8..ce6afd6d9e3bee68c21df7ffe456752783d47d77 100644
--- a/skeletons/constr_SET.c
+++ b/skeletons/constr_SET.c
@@ -150,8 +150,7 @@ SET_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		if(rval.code != RC_OK) {
 			ASN_DEBUG("%s tagging check failed: %d",
 				td->name, rval.code);
-			consumed_myself += rval.consumed;
-			RETURN(rval.code);
+			return rval;
 		}
 
 		if(ctx->left >= 0)
diff --git a/skeletons/constr_SET_OF.c b/skeletons/constr_SET_OF.c
index c298cc297173a3acc646f08d54353f53a0926a81..518713cafee5642161417fb479551dac2590fb92 100644
--- a/skeletons/constr_SET_OF.c
+++ b/skeletons/constr_SET_OF.c
@@ -118,8 +118,7 @@ SET_OF_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		if(rval.code != RC_OK) {
 			ASN_DEBUG("%s tagging check failed: %d",
 				td->name, rval.code);
-			consumed_myself += rval.consumed;
-			RETURN(rval.code);
+			return rval;
 		}
 
 		if(ctx->left >= 0)