diff --git a/skeletons/per_opentype.c b/skeletons/per_opentype.c
index afcc42c..70a1b44 100644
--- a/skeletons/per_opentype.c
+++ b/skeletons/per_opentype.c
@@ -27,33 +27,38 @@
  */
 int
 uper_open_type_put(asn_TYPE_descriptor_t *td, const asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) {
-	void *buf;
-	void *bptr;
-	ssize_t size;
-	size_t toGo;
+    void *buf;
+    void *bptr;
+    ssize_t size;
 
-	ASN_DEBUG("Open type put %s ...", td->name);
+    ASN_DEBUG("Open type put %s ...", td->name);
 
-	size = uper_encode_to_new_buffer(td, constraints, sptr, &buf);
-	if(size <= 0) return -1;
+    size = uper_encode_to_new_buffer(td, constraints, sptr, &buf);
+    if(size <= 0) return -1;
 
-	for(bptr = buf, toGo = size; toGo;) {
-		ssize_t maySave = uper_put_length(po, toGo);
-		ASN_DEBUG("Prepending length %d to %s and allowing to save %d",
-			(int)size, td->name, (int)maySave);
-		if(maySave < 0) break;
-		if(per_put_many_bits(po, bptr, maySave * 8)) break;
-		bptr = (char *)bptr + maySave;
-		toGo -= maySave;
-	}
+    ASN_DEBUG("Open type put %s of length %zd + overhead (1byte?)", td->name,
+              size);
 
-	FREEMEM(buf);
-	if(toGo) return -1;
+    bptr = buf;
+    do {
+        int need_eom = 0;
+        ssize_t maySave = uper_put_length(po, size, &need_eom);
+        ASN_DEBUG("Prepending length %zd to %s and allowing to save %d", size,
+                  td->name, (int)maySave);
+        if(maySave < 0) break;
+        if(per_put_many_bits(po, bptr, maySave * 8)) break;
+        bptr = (char *)bptr + maySave;
+        size -= maySave;
+        if(need_eom && uper_put_length(po, 0, 0)) {
+            FREEMEM(buf);
+            return -1;
+        }
+    } while(size);
 
-	ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)",
-		td->name, (long)size);
+    FREEMEM(buf);
+    if(size) return -1;
 
-	return 0;
+    return 0;
 }
 
 static asn_dec_rval_t
