diff --git a/asn1c/tests/check-126.-gen-PER.c b/asn1c/tests/check-126.-gen-PER.c
index db210b4c0cf0c6304a5f34f742a05e26642e399c..b28ed7999e7f3d9884ba56176c818c235dad66a0 100644
--- a/asn1c/tests/check-126.-gen-PER.c
+++ b/asn1c/tests/check-126.-gen-PER.c
@@ -242,7 +242,7 @@ compare_with_data_out(const char *fname, char *buf, int size) {
 	mustfail = lastChar == 'P';
 	compare = lastChar != 'C';
 
-	if(compare && getenv("REGENERATE")) {
+	if((compare && !mustfail) && getenv("REGENERATE")) {
 		f = fopen(outName, "w");
 		fwrite(buf, 1, size, f);
 		fclose(f);
diff --git a/asn1c/tests/data-126/data-126-01.out b/asn1c/tests/data-126/data-126-01.out
index 0f23c822888fda0c6adba98531da0515d72fa2b0..776f21344d954b0c47f40172c106f4e468fd6eb2 100644
Binary files a/asn1c/tests/data-126/data-126-01.out and b/asn1c/tests/data-126/data-126-01.out differ
diff --git a/skeletons/constr_CHOICE.c b/skeletons/constr_CHOICE.c
index 4c5414de278c81f8daae91ec2730978b489532d4..912febebcd63071bdd7be7f9352fdcabfecda29e 100644
--- a/skeletons/constr_CHOICE.c
+++ b/skeletons/constr_CHOICE.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, 2005, 2006 Lev Walkin <vlm@lionet.info>.
+ * Copyright (c) 2003, 2004, 2005, 2006, 2007 Lev Walkin <vlm@lionet.info>.
  * All rights reserved.
  * Redistribution and modifications are permitted subject to BSD license.
  */
diff --git a/tests/126-per-extensions-OK.asn1 b/tests/126-per-extensions-OK.asn1
index c4729d32612163ef36b3b1e5a9e561b550980ed4..26503cd06aab446f9dbda7af8205ca6fce27fb8a 100644
--- a/tests/126-per-extensions-OK.asn1
+++ b/tests/126-per-extensions-OK.asn1
@@ -14,7 +14,17 @@ BEGIN
 	PDU ::= SEQUENCE {
 		...,
 		str-o	IA5String	OPTIONAL,
-		str-m	IA5String
+		str-m	IA5String,
+		singl	Singleton,
+		pdu-2	PDU-2
+	}
+
+	Singleton ::= SEQUENCE {
+		mandatory IA5String DEFAULT "z"
+	}
+
+	PDU-2 ::= CHOICE {
+		str-p2 IA5String
 	}
 
 END