additional checks
diff --git a/skeletons/tests/check-PER.c b/skeletons/tests/check-PER.c
index 32ac52a..f21398b 100644
--- a/skeletons/tests/check-PER.c
+++ b/skeletons/tests/check-PER.c
@@ -215,6 +215,44 @@
 
 }
 
+/*
+ * Add N bits after P bits. Should result in N+P bits added.
+ */
+static void
+check_per_encoding_auto() {
+    int prior, next;
+    int ret, i;
+
+    for(prior = 0; prior <= 31; prior++) {
+      for(next = 0; next <= 31; next++) {
+        asn_per_outp_t po;
+        po.buffer = po.tmpspace;
+        po.nboff = 0;
+        po.nbits = 0;
+        po.outper = Ignore;
+        po.op_key = 0;
+        po.tmpspace[0] = 0xff;
+
+        ret = per_put_few_bits(&po, -1, prior);
+        assert(ret == 0);
+
+		fprintf(stderr, " (out{nboff=%d,nbits=%d,buf_offset=%d})\n", (int)po.nboff, (int)po.nbits, (int)(po.buffer - po.tmpspace));
+
+        ret = per_put_few_bits(&po, -1, next);
+        assert(ret == 0);
+
+		fprintf(stderr, " (out{nboff=%d,nbits=%d,buf_offset=%d})\n", (int)po.nboff, (int)po.nbits, (int)(po.buffer - po.tmpspace));
+
+		fprintf(stderr, "Putting %d + %d bits (%d/%d), got %d bytes and %d bits\n",
+            prior, next, (prior + next) / 8, (prior + next) % 8,
+            (int)(po.buffer - po.tmpspace), (int)po.nboff);
+        assert((po.buffer - po.tmpspace) * 8 + po.nboff == prior + next);
+        for(i = 0; i < (po.buffer - po.tmpspace); i++)
+            assert(po.tmpspace[0] == (unsigned char)-1);
+      }
+    }
+}
+
 static void
 check_per_encoding_sweep_with(uint8_t buf[], int already_bits, int add_bits) {
 	size_t buf_size = 8;
@@ -289,6 +327,7 @@
 main() {
 	check_per_decoding();
 	check_per_encoding();
+	check_per_encoding_auto();
 	check_per_encoding_sweep();
 	return 0;
 }