diff --git a/asn1/ranap/RANAP-IEs.asn b/asn1/ranap/RANAP-IEs.asn
index 78fcfbe..843ec8d 100644
--- a/asn1/ranap/RANAP-IEs.asn
+++ b/asn1/ranap/RANAP-IEs.asn
@@ -1334,7 +1334,7 @@
 
 
 
-PLMNidentity 				::= TBCD-STRING (SIZE (3))
+PLMNidentity 				::= OCTET STRING (SIZE (3))
 
 PLMNs-in-shared-network ::= SEQUENCE (SIZE (1..maxNrOfPLMNsSN)) OF
 	SEQUENCE {
diff --git a/src/ranap/RANAP_PLMNidentity.c b/src/ranap/RANAP_PLMNidentity.c
index 08b3115..eaa3bcf 100644
--- a/src/ranap/RANAP_PLMNidentity.c
+++ b/src/ranap/RANAP_PLMNidentity.c
@@ -9,6 +9,8 @@
 int
 RANAP_PLMNidentity_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+	size_t size;
 	
 	if(!sptr) {
 		_ASN_CTFAIL(app_key, td, sptr,
@@ -17,44 +19,41 @@
 		return -1;
 	}
 	
+	size = st->size;
 	
-	if(1 /* No applicable constraints whatsoever */) {
-		/* Nothing is here. See below */
+	if((size == 3l)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		_ASN_CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
 	}
-	
-	/* Replace with underlying type checker */
-	td->check_constraints = asn_DEF_RANAP_TBCD_STRING.check_constraints;
-	return td->check_constraints(td, sptr, ctfailcb, app_key);
 }
 
 /*
- * This type is implemented using RANAP_TBCD_STRING,
+ * This type is implemented using OCTET_STRING,
  * so here we adjust the DEF accordingly.
  */
 static void
 RANAP_PLMNidentity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
-	td->free_struct    = asn_DEF_RANAP_TBCD_STRING.free_struct;
-	td->print_struct   = asn_DEF_RANAP_TBCD_STRING.print_struct;
-	td->check_constraints = asn_DEF_RANAP_TBCD_STRING.check_constraints;
-	td->ber_decoder    = asn_DEF_RANAP_TBCD_STRING.ber_decoder;
-	td->der_encoder    = asn_DEF_RANAP_TBCD_STRING.der_encoder;
-	td->xer_decoder    = asn_DEF_RANAP_TBCD_STRING.xer_decoder;
-	td->xer_encoder    = asn_DEF_RANAP_TBCD_STRING.xer_encoder;
-	td->uper_decoder   = asn_DEF_RANAP_TBCD_STRING.uper_decoder;
-	td->uper_encoder   = asn_DEF_RANAP_TBCD_STRING.uper_encoder;
-	td->aper_decoder   = asn_DEF_RANAP_TBCD_STRING.aper_decoder;
-	td->aper_encoder   = asn_DEF_RANAP_TBCD_STRING.aper_encoder;
-	/* The next four lines are here because of -fknown-extern-type */
-	td->tags           = asn_DEF_RANAP_TBCD_STRING.tags;
-	td->tags_count     = asn_DEF_RANAP_TBCD_STRING.tags_count;
-	td->all_tags       = asn_DEF_RANAP_TBCD_STRING.all_tags;
-	td->all_tags_count = asn_DEF_RANAP_TBCD_STRING.all_tags_count;
-	/* End of these lines */
+	td->free_struct    = asn_DEF_OCTET_STRING.free_struct;
+	td->print_struct   = asn_DEF_OCTET_STRING.print_struct;
+	td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+	td->ber_decoder    = asn_DEF_OCTET_STRING.ber_decoder;
+	td->der_encoder    = asn_DEF_OCTET_STRING.der_encoder;
+	td->xer_decoder    = asn_DEF_OCTET_STRING.xer_decoder;
+	td->xer_encoder    = asn_DEF_OCTET_STRING.xer_encoder;
+	td->uper_decoder   = asn_DEF_OCTET_STRING.uper_decoder;
+	td->uper_encoder   = asn_DEF_OCTET_STRING.uper_encoder;
+	td->aper_decoder   = asn_DEF_OCTET_STRING.aper_decoder;
+	td->aper_encoder   = asn_DEF_OCTET_STRING.aper_encoder;
 	if(!td->per_constraints)
-		td->per_constraints = asn_DEF_RANAP_TBCD_STRING.per_constraints;
-	td->elements       = asn_DEF_RANAP_TBCD_STRING.elements;
-	td->elements_count = asn_DEF_RANAP_TBCD_STRING.elements_count;
-	td->specifics      = asn_DEF_RANAP_TBCD_STRING.specifics;
+		td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+	td->elements       = asn_DEF_OCTET_STRING.elements;
+	td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+	td->specifics      = asn_DEF_OCTET_STRING.specifics;
 }
 
 void
@@ -133,9 +132,12 @@
 
 static asn_per_constraints_t asn_PER_type_RANAP_PLMNidentity_constr_1 GCC_NOTUSED = {
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  3l,  3l }	/* (SIZE(3..3)) */,
 	0, 0	/* No PER value map */
 };
+static const ber_tlv_tag_t asn_DEF_RANAP_PLMNidentity_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
 asn_TYPE_descriptor_t asn_DEF_RANAP_PLMNidentity = {
 	"RANAP_PLMNidentity",
 	"RANAP_PLMNidentity",
@@ -150,11 +152,13 @@
 	RANAP_PLMNidentity_encode_uper,
 	RANAP_PLMNidentity_decode_aper,
 	RANAP_PLMNidentity_encode_aper,
-	CHOICE_outmost_tag,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RANAP_PLMNidentity_tags_1,
+	sizeof(asn_DEF_RANAP_PLMNidentity_tags_1)
+		/sizeof(asn_DEF_RANAP_PLMNidentity_tags_1[0]), /* 1 */
+	asn_DEF_RANAP_PLMNidentity_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANAP_PLMNidentity_tags_1)
+		/sizeof(asn_DEF_RANAP_PLMNidentity_tags_1[0]), /* 1 */
 	&asn_PER_type_RANAP_PLMNidentity_constr_1,
 	0, 0,	/* No members */
 	0	/* No specifics */
diff --git a/src/ranap/RANAP_PLMNidentity.h b/src/ranap/RANAP_PLMNidentity.h
index d9f09d4..e503804 100644
--- a/src/ranap/RANAP_PLMNidentity.h
+++ b/src/ranap/RANAP_PLMNidentity.h
@@ -12,14 +12,14 @@
 #include <asn_application.h>
 
 /* Including external dependencies */
-#include "RANAP_TBCD-STRING.h"
+#include <OCTET_STRING.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /* RANAP_PLMNidentity */
-typedef RANAP_TBCD_STRING_t	 RANAP_PLMNidentity_t;
+typedef OCTET_STRING_t	 RANAP_PLMNidentity_t;
 
 /* Implementation */
 extern asn_TYPE_descriptor_t asn_DEF_RANAP_PLMNidentity;
