diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn
index 2233ece..1430af0 100644
--- a/gbproxy/GBProxy_Tests.ttcn
+++ b/gbproxy/GBProxy_Tests.ttcn
@@ -44,7 +44,7 @@
 const integer max_fr_info_size := 1600;
 
 modulepar {
-	/* IP/port on which we run our internal GSUP/HLR emulation */
+	/* SGSN NS configuration */
 	NSConfigurations mp_nsconfig_sgsn := {
 		{
 			nsei := 101,
@@ -66,9 +66,12 @@
 			}
 		}
 	};
+	/* BSS NSEI start at 2000 + x
+	 * NSVCI start from value of NSEI + 100
+	 * UDP port is NSVCI * 10 */
 	NSConfigurations mp_nsconfig_pcu := {
 		{
-			nsei := 96,
+			nsei := 2001,
 			role_sgsn := false,
 			handle_sns := false,
 			nsvc := {
@@ -82,12 +85,12 @@
 							remote_ip := "127.0.0.1"
 						}
 					},
-					nsvci := 97
+					nsvci := 2101
 				}
 			}
 		},
 		{
-			nsei := 97,
+			nsei := 2002,
 			role_sgsn := false,
 			handle_sns := false,
 			nsvc := {
@@ -95,18 +98,18 @@
 					provider := {
 						ip := {
 							address_family := AF_INET,
-							local_udp_port := 21011,
+							local_udp_port := 21020,
 							local_ip := "127.0.0.1",
 							remote_udp_port := 23000,
 							remote_ip := "127.0.0.1"
 						}
 					},
-					nsvci := 98
+					nsvci := 2102
 				}
 			}
 		},
 		{
-			nsei := 98,
+			nsei := 2003,
 			role_sgsn := false,
 			handle_sns := false,
 			nsvc := {
@@ -114,24 +117,33 @@
 					provider := {
 						ip := {
 							address_family := AF_INET,
-							local_udp_port := 21012,
+							local_udp_port := 21030,
 							local_ip := "127.0.0.1",
 							remote_udp_port := 23000,
 							remote_ip := "127.0.0.1"
 						}
 					},
-					nsvci := 99
+					nsvci := 2103
 				}
 			}
 		}
 	};
+	/* BVCI are NSEI*10 + x
+	 * The first NSE only has one BVC, the second one 2 and so on
+	 * The Cell ID is BVCI + 10000
+	 * LAC/RAC are configured in such a way that:
+	 * LAC 13135 is present once in NSE(2001), twice in NSE(2002) and once in NSE(2003)
+	 * LAC 13300 is present twice in NSE(2003)
+	 * RAI 13135-1 is present in NSE(2002) and NSE(2003)
+	 * RAI 13300-0 is present twice in NSE(2003)
+	 */
 	BssgpConfigs mp_gbconfigs := {
 		{
-			nsei := 96,
+			nsei := 2001,
 			sgsn_role := false,
 			bvc := {
 				{
-					bvci := 196,
+					bvci := 20011,
 					cell_id := {
 						ra_id := {
 							lai := {
@@ -140,18 +152,18 @@
 							},
 							rac := 0
 						},
-						cell_id := 20960
+						cell_id := 30011
 					},
 					depth := BSSGP_DECODE_DEPTH_BSSGP,
 					create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
 				}
 			}
 		}, {
-			nsei := 97,
+			nsei := 2002,
 			sgsn_role := false,
 			bvc := {
 				{
-					bvci := 210,
+					bvci := 20021,
 					cell_id := {
 						ra_id := {
 							lai := {
@@ -160,18 +172,48 @@
 							},
 							rac := 1
 						},
-						cell_id := 20961
+						cell_id := 30021
+					},
+					depth := BSSGP_DECODE_DEPTH_BSSGP,
+					create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
+				},
+				{
+					bvci := 20022,
+					cell_id := {
+						ra_id := {
+							lai := {
+								mcc_mnc := c_mcc_mnc,
+								lac := 13135
+							},
+							rac := 2
+						},
+						cell_id := 30022
 					},
 					depth := BSSGP_DECODE_DEPTH_BSSGP,
 					create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
 				}
 			}
 		}, {
-			nsei := 98,
+			nsei := 2003,
 			sgsn_role := false,
 			bvc := {
 				{
-					bvci := 220,
+					bvci := 20031,
+					cell_id := {
+						ra_id := {
+							lai := {
+								mcc_mnc := c_mcc_mnc,
+								lac := 13135
+							},
+							rac := 1
+						},
+						cell_id := 30031
+					},
+					depth := BSSGP_DECODE_DEPTH_BSSGP,
+					create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
+				},
+				{
+					bvci := 20032,
 					cell_id := {
 						ra_id := {
 							lai := {
@@ -180,7 +222,22 @@
 							},
 							rac := 0
 						},
-						cell_id := 20962
+						cell_id := 30032
+					},
+					depth := BSSGP_DECODE_DEPTH_BSSGP,
+					create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
+				},
+				{
+					bvci := 20033,
+					cell_id := {
+						ra_id := {
+							lai := {
+								mcc_mnc := c_mcc_mnc,
+								lac := 13300
+							},
+							rac := 0
+						},
+						cell_id := 30033
 					},
 					depth := BSSGP_DECODE_DEPTH_BSSGP,
 					create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
@@ -1354,8 +1411,13 @@
 /* PS-PAGING on SIG-BVC for Location Area */
 private function f_TC_paging_ps_sig_lac(charstring id) runs on BSSGP_ConnHdlr
 {
-	/* Both PCU index 0 and 1 have a BVC within the LAC */
-	f_send_paging_ps_exp_multi(ts_BssgpP4LAC(pcu_bvc_cfg[0].cell_id.ra_id.lai), 0, {0, 1});
+	/* The first LAC (13135) is shared by all three NSEs */
+	f_send_paging_ps_exp_multi(ts_BssgpP4LAC(pcu_bvc_cfg[0].cell_id.ra_id.lai), 0, {0, 1, 2});
+	/* Reset state */
+	g_roi := {};
+	/* Make LAC (13300) available on pcu index 2 */
+	f_connect_to_pcu_bvc(port_idx := 2, nse_idx := 2, bvc_idx := 1);
+	f_send_paging_ps_exp_multi(ts_BssgpP4LAC(pcu_bvc_cfg[2].cell_id.ra_id.lai), 0, {2});
 }
 testcase TC_paging_ps_sig_lac() runs on test_CT {
 	var BSSGP_ConnHdlr vc_conn;
@@ -1389,8 +1451,15 @@
 /* PS-PAGING on SIG-BVC for Routeing Area */
 private function f_TC_paging_ps_sig_rac(charstring id) runs on BSSGP_ConnHdlr
 {
-	/* Only PCU index 0 has a matching BVC within the LAC */
+	/* Only PCU index 0 has a matching BVC with the RA ID */
 	f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[0].cell_id.ra_id), 0, {0});
+	g_roi := {};
+	/* PCU index 1 and 2 have a matching BVC with the RA ID */
+	f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[2].cell_id.ra_id), 0, {1, 2});
+	g_roi := {};
+	/* PCU index 2 has two matching BVCs with the RA ID */
+	f_connect_to_pcu_bvc(port_idx := 2, nse_idx := 2, bvc_idx := 1);
+	f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[2].cell_id.ra_id), 0, {2});
 }
 testcase TC_paging_ps_sig_rac() runs on test_CT {
 	var BSSGP_ConnHdlr vc_conn;
