diff --git a/ns/NS_Tests.ttcn b/ns/NS_Tests.ttcn
index d5af707..f57302f 100644
--- a/ns/NS_Tests.ttcn
+++ b/ns/NS_Tests.ttcn
@@ -609,6 +609,37 @@
 	f_clean_ns_codec();
 }
 
+testcase TC_sns_sgsn_sns_size_invalid_num_of_ip_eps() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig);
+	const integer IDX := 0;
+	const integer NUM_IP := 1;
+	log("f_outgoing_sns_size_invalid_num_of_ip_eps(idx=", IDX, ")");
+	var NsCause cause;
+	/* Assumption: No connections to other NSEs for SUT and testcomponent */
+	const integer sgsn_ip4_endpoints := lengthof(mp_nsconfig.nsvc);
+	const integer ip4_endpoints := lengthof(mp_nsconfig.nsvc);
+	const integer num_of_nsvcs := sgsn_ip4_endpoints * ip4_endpoints;
+	/* Template that would be accepted, only missing the number of IP endpoints
+	 * (since there are no ternary operators in TTCN-3...) */
+	var template (omit) PDU_NS ts_base_SNS_SIZE_configured :=
+		ts_SNS_SIZE(g_nsconfig.nsei, rst_flag := true, max_nsvcs := num_of_nsvcs,
+			    num_v4 := omit, num_v6 := omit);
+	/* Send IP4 endpoints when IP6 is configured and vice versa, in effect sending an unsupported type of NS-VC endpoints. */
+	if (g_nsconfig.nsvc[0].provider.ip.address_family == AF_INET) {
+		ts_base_SNS_SIZE_configured.pDU_SNS_Size.numberOfIP6_Endpoints :=
+			{iEI := int2oct(enum2int(mp_ns_iei_num_ipv6_ep), 1), numberOfIP_Endpoints := int2oct(NUM_IP, 2)};
+		cause := NS_CAUSE_INVALID_NR_OF_IPv6_ENDPOINTS;
+	} else {
+		ts_base_SNS_SIZE_configured.pDU_SNS_Size.numberOfIP4_Endpoints :=
+			{iEI := int2oct(enum2int(mp_ns_iei_num_ipv4_ep), 1), numberOfIP_Endpoints := int2oct(NUM_IP, 2)};
+		cause := NS_CAUSE_INVALID_NR_OF_IPv4_ENDPOINTS;
+	}
+	f_send_expect(IDX, ts_base_SNS_SIZE_configured, cause);
+	setverdict(pass);
+	f_clean_ns_codec();
+}
+
 testcase TC_sns_bss_config_success() runs on RAW_Test_CT {
 	f_init_vty();
 	f_init_ns_codec(mp_nsconfig);
@@ -1149,6 +1180,7 @@
 			execute( TC_sns_sgsn_size_correct_port() );
 			execute( TC_sns_sgsn_size_after_success() );
 			execute( TC_sns_sgsn_sns_size_syntactically_wrong_NSEI() );
+			execute( TC_sns_sgsn_sns_size_invalid_num_of_ip_eps() );
 		}
 	}
 }
