diff --git a/tests/tests-randomized/bundles/03-BIT-STRING-bundle.txt b/tests/tests-randomized/bundles/03-BIT-STRING-bundle.txt
new file mode 100644
index 0000000..2835b3c
--- /dev/null
+++ b/tests/tests-randomized/bundles/03-BIT-STRING-bundle.txt
@@ -0,0 +1,19 @@
+-- Test encoding/decoding/transcoding of everything concerning the BIT STRING.
+T ::= BIT STRING { foo(0) }
+T ::= BIT STRING { foo(0) } (SIZE(0..1))
+T ::= BIT STRING { foo(0) } (SIZE(1))
+T ::= BIT STRING { foo(0) } (SIZE(1..MAX))
+T ::= BIT STRING { foo(0) } (SIZE(1..2))
+T ::= BIT STRING { foo(0) } (SIZE(2))
+T ::= BIT STRING { foo(0) } (SIZE(2,...))
+T ::= BIT STRING { foo(0), bar(65535) }
+T ::= BIT STRING { foo(0), bar(65535) } (SIZE(0..16))
+T ::= BIT STRING { foo(0), bar(65535) } (SIZE(16))
+T ::= BIT STRING { foo(0), bar(2147483647) }
+T ::= BIT STRING { foo(0), bar(2147483647) } (SIZE(1..MAX))
+T ::= BIT STRING { foo(2147483648), bar(0), baz(2147483647) }
+T ::= BIT STRING { foo(2147483648), baz(2147483647) }
+T ::= BIT STRING { foo(2147483648), baz(2147483647) } (SIZE(32))
+T ::= BIT STRING { foo(2147483648), baz(2147483647) } (SIZE(31,...))
+T ::= BIT STRING { foo(2147483648), baz(2147483647) } (SIZE(0..32))
+T ::= BIT STRING { foo(2147483648), baz(2147483647) } (SIZE(0..31,...))
diff --git a/tests/tests-randomized/bundles/04-VisibleString-bundle.txt b/tests/tests-randomized/bundles/04-VisibleString-bundle.txt
new file mode 100644
index 0000000..c86aa79
--- /dev/null
+++ b/tests/tests-randomized/bundles/04-VisibleString-bundle.txt
@@ -0,0 +1,26 @@
+-- Test encoding/decoding/transcoding of a simple string type
+T ::= VisibleString
+T ::= VisibleString ("Value Constraint")
+T ::= VisibleString (SIZE(0))
+T ::= VisibleString (SIZE(0,...))
+T ::= VisibleString (SIZE(1))
+T ::= VisibleString (SIZE(1)) (FROM("A".."B"))
+T ::= VisibleString (SIZE(1,..))
+T ::= VisibleString (SIZE(2))
+T ::= VisibleString (SIZE(2,...))
+T ::= VisibleString (SIZE(1..2))
+T ::= VisibleString (SIZE(1..2,...))
+T ::= VisibleString (SIZE(4..6,...)) (FROM("A".."B"))
+T ::= VisibleString (SIZE(1..MAX)) FROM("A".."B"))
+T ::= VisibleString (SIZE(1..127))
+T ::= VisibleString (SIZE(1..128))
+T ::= VisibleString (SIZE(1..129))
+T ::= VisibleString (SIZE(5) INTERSECTION FROM("A".."Z"))
+T ::= VisibleString (SIZE(64000))   -- Length is not encoded, #11.9.3.3
+T ::= VisibleString (SIZE(32000..32002))
+T ::= VisibleString (SIZE(32000..32002)) (FROM("A".."B"))
+T ::= VisibleString (SIZE(32000..32002,...)) (FROM("A".."B"))
+T ::= VisibleString (SIZE(65530..65535))
+T ::= VisibleString (SIZE(65530..65536))
+T ::= VisibleString (SIZE(4..6) INTERSECTION (FROM("A".."B")))
+T ::= VisibleString (SIZE(4..6,...) INTERSECTION (FROM("A".."B")))
diff --git a/tests/tests-randomized/check-bundles.sh b/tests/tests-randomized/check-bundles.sh
index f9e2b4d..3ba312d 100755
--- a/tests/tests-randomized/check-bundles.sh
+++ b/tests/tests-randomized/check-bundles.sh
@@ -66,7 +66,7 @@
     echo "Testing [$asn] ${where}"
 
     mkdir -p ${RNDTEMP}
-    if (cd ${RNDTEMP} && compile_and_test "$asn" "$@"); then
+    if (set -e && cd ${RNDTEMP} && compile_and_test "$asn" "$@"); then
         echo "OK [$asn] ${where}"
         tests_succeeded=$((tests_succeeded+1))
     else
@@ -134,7 +134,7 @@
         done
     fi
 
-    return 0;
+    return 0
 }
 
 asn_compile() {
@@ -150,8 +150,11 @@
     test ! -f Makefile.am   # Protection from accidental clobbering
     echo "Test DEFINITIONS ::= BEGIN $asn" > test.asn1
     echo "END" >> test.asn1
-    ${abs_top_builddir}/asn1c/asn1c -S ${abs_top_srcdir}/skeletons \
+    if ! ${abs_top_builddir}/asn1c/asn1c -S ${abs_top_srcdir}/skeletons \
         -gen-OER -gen-PER test.asn1
+    then
+        return 1
+    fi
     rm -f converter-example.c
     ln -sf ../random-test-driver.c || cp ../random-test-driver.c .
     echo "CFLAGS+= -DASN1_TEXT='$short_asn'" > Makefile
diff --git a/tests/tests-randomized/random-test-driver.c b/tests/tests-randomized/random-test-driver.c
index e2ea475..0b93d96 100644
--- a/tests/tests-randomized/random-test-driver.c
+++ b/tests/tests-randomized/random-test-driver.c
@@ -190,9 +190,6 @@
 
 static void
 check_random_roundtrip(enum asn_transfer_syntax syntax, int iterations) {
-    char tmp_buffer[512];
-    char *buffer = tmp_buffer;
-    size_t buffer_size = sizeof(tmp_buffer);
     struct encoding_map enc;
 
     for(size_t i = 0; i < sizeof(encodings)/sizeof(encodings[0]); i++) {
@@ -205,6 +202,9 @@
     }
 
     for(int i = 0; i < iterations; i++) {
+        char tmp_buffer[512];
+        char *buffer = tmp_buffer;
+        size_t buffer_size = sizeof(tmp_buffer);
         T_t *structure = 0;
         T_t *decoded_structure = 0;
 
@@ -228,6 +228,8 @@
                 exit(EX_SOFTWARE);
             }
             if(er.encoded > buffer_size && buffer == tmp_buffer) {
+                fprintf(stderr, "Reallocate output buffer %zu -> %zu\n",
+                        buffer_size, er.encoded);
                 buffer = malloc(er.encoded + 1);
                 assert(buffer);
                 buffer[er.encoded] = '\0';
@@ -236,7 +238,11 @@
             }
             break;
         }
-        assert(er.encoded <= buffer_size);
+        if(er.encoded > buffer_size) {
+            fprintf(stderr, "Data %zd does not fit into buffer %zu\n",
+                    er.encoded, buffer_size);
+            assert(er.encoded <= buffer_size);
+        }
 
         asn_dec_rval_t rval =
             asn_decode(0, syntax, &asn_DEF_T, (void **)&decoded_structure,
@@ -244,9 +250,9 @@
         if(rval.code == RC_OK) {
             /* Everything's cool... or is it? Expecting a proper consumed */
             if(rval.consumed != er.encoded) {
-                fprintf(stderr, "Encoded into %zd, yet consumed %zu",
+                fprintf(stderr, "Encoded into %zd, yet consumed %zu\n",
                         er.encoded, rval.consumed);
-                fprintf(stderr, "Structure:\n");
+                fprintf(stderr, "Original random structure:\n");
                 asn_fprint(stderr, &asn_DEF_T, structure);
                 assert(rval.consumed == er.encoded);
                 exit(EX_SOFTWARE);
@@ -256,7 +262,7 @@
                     "Decoding %zu bytes of T yielded %s after byte %zu\n",
                     er.encoded, rval.code == RC_FAIL ? "RC_FAIL" : "RC_WMORE",
                     rval.consumed);
-            fprintf(stderr, "Structure:\n");
+            fprintf(stderr, "Original random structure:\n");
             asn_fprint(stderr, &asn_DEF_T, structure);
             exit(EX_SOFTWARE);
         }
@@ -278,8 +284,6 @@
 
         if(buffer != tmp_buffer) {
             free(buffer);
-            buffer = tmp_buffer;
-            buffer_size = sizeof(tmp_buffer);
         }
 
         if(i < 5) {
