diff --git a/asn1/ranap/RANAP-IEs.asn b/asn1/ranap/RANAP-IEs.asn
index 9593ee8..78fcfbe 100644
--- a/asn1/ranap/RANAP-IEs.asn
+++ b/asn1/ranap/RANAP-IEs.asn
@@ -842,7 +842,7 @@
 	iE-Extensions		IE-Extensions			OPTIONAL
 }
 
-IMSI	::= TBCD-STRING (SIZE (3..8))
+IMSI	::= OCTET STRING (SIZE (3..8))
 -- Reference: 23.003
 
 IncludeVelocity		::= ENUMERATED {
diff --git a/src/ranap/RANAP_IMSI.c b/src/ranap/RANAP_IMSI.c
index 89a85cd..4b35ef7 100644
--- a/src/ranap/RANAP_IMSI.c
+++ b/src/ranap/RANAP_IMSI.c
@@ -9,6 +9,8 @@
 int
 RANAP_IMSI_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 && size <= 8l)) {
+		/* 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_IMSI_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_IMSI_constr_1 GCC_NOTUSED = {
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 3,  3,  3l,  8l }	/* (SIZE(3..8)) */,
 	0, 0	/* No PER value map */
 };
+static const ber_tlv_tag_t asn_DEF_RANAP_IMSI_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
 asn_TYPE_descriptor_t asn_DEF_RANAP_IMSI = {
 	"RANAP_IMSI",
 	"RANAP_IMSI",
@@ -150,11 +152,13 @@
 	RANAP_IMSI_encode_uper,
 	RANAP_IMSI_decode_aper,
 	RANAP_IMSI_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_IMSI_tags_1,
+	sizeof(asn_DEF_RANAP_IMSI_tags_1)
+		/sizeof(asn_DEF_RANAP_IMSI_tags_1[0]), /* 1 */
+	asn_DEF_RANAP_IMSI_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANAP_IMSI_tags_1)
+		/sizeof(asn_DEF_RANAP_IMSI_tags_1[0]), /* 1 */
 	&asn_PER_type_RANAP_IMSI_constr_1,
 	0, 0,	/* No members */
 	0	/* No specifics */
diff --git a/src/ranap/RANAP_IMSI.h b/src/ranap/RANAP_IMSI.h
index 6cf720d..747c546 100644
--- a/src/ranap/RANAP_IMSI.h
+++ b/src/ranap/RANAP_IMSI.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_IMSI */
-typedef RANAP_TBCD_STRING_t	 RANAP_IMSI_t;
+typedef OCTET_STRING_t	 RANAP_IMSI_t;
 
 /* Implementation */
 extern asn_TYPE_descriptor_t asn_DEF_RANAP_IMSI;
