diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn
index b440292..f3079da 100644
--- a/hnbgw/HNBGW_Tests.ttcn
+++ b/hnbgw/HNBGW_Tests.ttcn
@@ -228,6 +228,8 @@
 	var Iuh_Emulation_CT vc_Iuh[NUM_HNB];
 	var RUA_Emulation_CT vc_RUA[NUM_HNB];
 	port HNBAP_PT HNBAP[NUM_HNB];
+	/* Number of HNBs to be used/started by the test */
+	var integer g_num_hnbs := NUM_HNB;
 
 	var MGCP_Emulation_CT vc_MGCP;
 	port TELNETasp_PT HNBGWVTY;
@@ -328,7 +330,7 @@
 		create_cb := refers(IuhRanapCreateCallback),
 		unitdata_cb := refers(IuhRanapUnitdataCallback)
 	};
-	for (var integer i := 0; i < NUM_HNB; i := i+1) {
+	for (var integer i := 0; i < g_num_hnbs; i := i+1) {
 		g_hnb_cfg[i] := {
 			lai := {
 				mcc_mnc := '00101'H,
@@ -373,7 +375,7 @@
 
 /* helper function to start all of the simulated hNodeBs */
 function f_start_hnbs() runs on test_CT {
-	for (var integer i:= 0; i < NUM_HNB; i := i+1) {
+	for (var integer i:= 0; i < g_num_hnbs; i := i+1) {
 		f_hnbap_register(i, i);
 	}
 }
@@ -671,12 +673,14 @@
 }
 
 testcase TC_hnb_register() runs on test_CT {
+	g_num_hnbs := 1;
 	f_init();
 	f_hnbap_register(0);
 	f_shutdown_helper();
 }
 
 testcase TC_hnb_register_duplicate() runs on test_CT {
+	g_num_hnbs := 2;
 	f_init();
 	f_hnbap_register(0);
 	f_hnbap_register(1, 0, expect_reject := true);
@@ -708,6 +712,7 @@
 testcase TC_ranap_cs_initial_ue() runs on test_CT {
 	var ConnHdlr vc_conn;
 
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 
@@ -717,6 +722,7 @@
 testcase TC_ranap_ps_initial_ue() runs on test_CT {
 	var ConnHdlr vc_conn;
 
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 
@@ -735,6 +741,7 @@
 testcase TC_ranap_cs_initial_ue_empty_cr() runs on test_CT {
 	var ConnHdlr vc_conn;
 
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 
@@ -749,6 +756,7 @@
 testcase TC_ranap_ps_initial_ue_empty_cr() runs on test_CT {
 	var ConnHdlr vc_conn;
 
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 
@@ -988,6 +996,7 @@
 
 testcase TC_rab_assignment() runs on test_CT {
 	var ConnHdlr vc_conn;
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 
@@ -1023,6 +1032,7 @@
 
 testcase TC_rab_assign_fail() runs on test_CT {
 	var ConnHdlr vc_conn;
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 
@@ -1069,6 +1079,7 @@
 
 testcase TC_rab_release() runs on test_CT {
 	var ConnHdlr vc_conn;
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 
@@ -1117,6 +1128,7 @@
 
 testcase TC_rab_assign_mgcp_to() runs on test_CT {
 	var ConnHdlr vc_conn;
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 
@@ -1141,7 +1153,7 @@
 }
 testcase TC_ranap_cs_bidir() runs on test_CT {
 	var ConnHdlr vc_conn;
-
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 
@@ -1150,7 +1162,7 @@
 }
 testcase TC_ranap_ps_bidir() runs on test_CT {
 	var ConnHdlr vc_conn;
-
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 
@@ -1175,7 +1187,7 @@
 }
 testcase TC_ranap_cs_mo_disconnect() runs on test_CT {
 	var ConnHdlr vc_conn;
-
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 
@@ -1184,7 +1196,7 @@
 }
 testcase TC_ranap_ps_mo_disconnect() runs on test_CT {
 	var ConnHdlr vc_conn;
-
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 
@@ -1331,6 +1343,7 @@
 
 testcase TC_ps_rab_assignment() runs on test_CT {
 	var ConnHdlr vc_conn;
+	g_num_hnbs := 1;
 	f_init();
 	f_start_hnbs();
 	f_sleep(1.0);
