diff --git a/tests/tests-asn1c-compiler/84-param-tags-OK.asn1.-Pfwide-types b/tests/tests-asn1c-compiler/84-param-tags-OK.asn1.-Pfwide-types
index 538a342..c2e286d 100644
--- a/tests/tests-asn1c-compiler/84-param-tags-OK.asn1.-Pfwide-types
+++ b/tests/tests-asn1c-compiler/84-param-tags-OK.asn1.-Pfwide-types
@@ -32,7 +32,7 @@
 /*** <<< CODE [TestType] >>> ***/
 
 static int
-memb_common_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_common_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
 	long value;
 	
@@ -59,23 +59,27 @@
 
 /*** <<< STAT-DEFS [TestType] >>> ***/
 
-static int asn_DFL_2_set_0(int set_value, void **sptr) {
+static int asn_DFL_2_cmp_0(const void *sptr) {
+	const long *st = sptr;
+	
+	if(!st) {
+		return -1; /* No value is not a default value */
+	}
+	
+	/* Test default value 0 */
+	return (*st != 0);
+}
+static int asn_DFL_2_set_0(void **sptr) {
 	long *st = *sptr;
 	
 	if(!st) {
-		if(!set_value) return -1;	/* Not a default value */
 		st = (*sptr = CALLOC(1, sizeof(*st)));
 		if(!st) return -1;
 	}
 	
-	if(set_value) {
-		/* Install default value 0 */
-		*st = 0;
-		return 0;
-	} else {
-		/* Test default value 0 */
-		return (*st == 0);
-	}
+	/* Install default value 0 */
+	*st = 0;
+	return 0;
 }
 asn_TYPE_member_t asn_MBR_TestType_16P0_1[] = {
 	{ ATF_NOFLAGS, 1, offsetof(struct TestType_16P0, common),
@@ -84,7 +88,8 @@
 		.type = &asn_DEF_NativeInteger,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints =  memb_common_constraint_1 },
-		.default_value = asn_DFL_2_set_0,	/* DEFAULT 0 */
+		.default_value_cmp = asn_DFL_2_cmp_0,	/* Compare DEFAULT 0 */
+		.default_value_set = asn_DFL_2_set_0,	/* Set DEFAULT 0 */
 		.name = "common"
 		},
 };
@@ -119,23 +124,27 @@
 	&asn_SPC_TestType_16P0_specs_1	/* Additional specs */
 };
 
-static int asn_DFL_4_set_0(int set_value, void **sptr) {
+static int asn_DFL_4_cmp_0(const void *sptr) {
+	const BOOLEAN_t *st = sptr;
+	
+	if(!st) {
+		return -1; /* No value is not a default value */
+	}
+	
+	/* Test default value 0 */
+	return (*st != 0);
+}
+static int asn_DFL_4_set_0(void **sptr) {
 	BOOLEAN_t *st = *sptr;
 	
 	if(!st) {
-		if(!set_value) return -1;	/* Not a default value */
 		st = (*sptr = CALLOC(1, sizeof(*st)));
 		if(!st) return -1;
 	}
 	
-	if(set_value) {
-		/* Install default value 0 */
-		*st = 0;
-		return 0;
-	} else {
-		/* Test default value 0 */
-		return (*st == 0);
-	}
+	/* Install default value 0 */
+	*st = 0;
+	return 0;
 }
 asn_TYPE_member_t asn_MBR_TestType_16P1_3[] = {
 	{ ATF_NOFLAGS, 1, offsetof(struct TestType_16P1, common),
@@ -144,7 +153,8 @@
 		.type = &asn_DEF_BOOLEAN,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = asn_DFL_4_set_0,	/* DEFAULT 0 */
+		.default_value_cmp = asn_DFL_4_cmp_0,	/* Compare DEFAULT 0 */
+		.default_value_set = asn_DFL_4_set_0,	/* Set DEFAULT 0 */
 		.name = "common"
 		},
 };
@@ -219,7 +229,7 @@
 		.type = &asn_DEF_TestType_16P0,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "type1"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct TestChoice, choice.type2),
@@ -228,7 +238,7 @@
 		.type = &asn_DEF_TestType_16P1,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "type2"
 		},
 };
@@ -243,7 +253,7 @@
 	sizeof(((struct TestChoice *)0)->present),
 	.tag2el = asn_MAP_TestChoice_tag2el_1,
 	.tag2el_count = 2,	/* Count of tags in the map */
-	.canonical_order = 0,
+	0, 0,
 	.ext_start = -1	/* Extensions start */
 };
 asn_TYPE_descriptor_t asn_DEF_TestChoice = {
@@ -294,7 +304,7 @@
 /*** <<< CODE [AutoType] >>> ***/
 
 static int
-memb_common_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_common_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
 	long value;
 	
@@ -319,7 +329,7 @@
 }
 
 static int
-memb_common_constraint_3(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_common_constraint_3(const asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
 	BOOLEAN_t value;
 	
@@ -353,7 +363,7 @@
 		.type = &asn_DEF_NativeInteger,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints =  memb_common_constraint_1 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "common"
 		},
 };
@@ -395,7 +405,7 @@
 		.type = &asn_DEF_BOOLEAN,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints =  memb_common_constraint_3 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "common"
 		},
 };
@@ -470,7 +480,7 @@
 		.type = &asn_DEF_AutoType_34P0,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "type1"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct AutoChoice, choice.type2),
@@ -479,7 +489,7 @@
 		.type = &asn_DEF_AutoType_34P1,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "type2"
 		},
 };
@@ -494,7 +504,7 @@
 	sizeof(((struct AutoChoice *)0)->present),
 	.tag2el = asn_MAP_AutoChoice_tag2el_1,
 	.tag2el_count = 2,	/* Count of tags in the map */
-	.canonical_order = 0,
+	0, 0,
 	.ext_start = -1	/* Extensions start */
 };
 asn_TYPE_descriptor_t asn_DEF_AutoChoice = {
