diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn
index 182cbd2..be4283e 100644
--- a/sgsn/SGSN_Tests.ttcn
+++ b/sgsn/SGSN_Tests.ttcn
@@ -671,12 +671,12 @@
 	deactivate(di);
 }
 
-function f_upd_ptmsi_and_tlli(OCT4 p_tmsi, integer bssgp_index := 0) runs on BSSGP_ConnHdlr {
+function f_upd_ptmsi_and_tlli(OCT4 p_tmsi, integer ran_index := 0) runs on BSSGP_ConnHdlr {
 	g_pars.p_tmsi := p_tmsi;
 	/* update TLLI */
 	g_pars.tlli_old := g_pars.tlli;
 	g_pars.tlli := g_pars.p_tmsi or4b 'c0000000'O;
-	f_bssgp_client_llgmm_assign(g_pars.tlli_old, g_pars.tlli, BSSGP_PROC[bssgp_index]);
+	f_bssgp_client_llgmm_assign(g_pars.tlli_old, g_pars.tlli, BSSGP_PROC[ran_index]);
 }
 
 function f_process_attach_accept(PDU_GMM_AttachAccept aa) runs on BSSGP_ConnHdlr {
@@ -708,7 +708,7 @@
 	/* T3302, T3319, T3323, T3312_ext, T3324 */
 }
 
-function f_process_rau_accept(PDU_GMM_RoutingAreaUpdateAccept ra, integer bssgp_index := 0) runs on BSSGP_ConnHdlr {
+function f_process_rau_accept(PDU_GMM_RoutingAreaUpdateAccept ra, integer ran_index := 0) runs on BSSGP_ConnHdlr {
 	/* mandatory IE */
 	g_pars.ra := ra.routingAreaId;
 	if (ispresent(ra.allocatedPTMSI)) {
@@ -716,7 +716,7 @@
 			setverdict(fail, "unexpected P-TMSI allocation");
 			mtc.stop;
 		}
-		f_upd_ptmsi_and_tlli(ra.allocatedPTMSI.mobileIdentityLV.mobileIdentityV.oddEvenInd_identity.tmsi_ptmsi.octets, bssgp_index);
+		f_upd_ptmsi_and_tlli(ra.allocatedPTMSI.mobileIdentityLV.mobileIdentityV.oddEvenInd_identity.tmsi_ptmsi.octets, ran_index);
 	}
 	if (ispresent(ra.msIdentity)) {
 		setverdict(fail, "unexpected TMSI allocation in non-combined attach");
@@ -1094,10 +1094,10 @@
 }
 
 /* general GPRS DETACH helper */
-function f_detach_mo(BIT3 detach_type, boolean power_off, boolean expect_purge, integer bssgp_index := 0) runs on BSSGP_ConnHdlr {
+function f_detach_mo(BIT3 detach_type, boolean power_off, boolean expect_purge, integer ran_index := 0) runs on BSSGP_ConnHdlr {
 	var PDU_L3_SGSN_MS l3_mt;
 	timer T := 5.0;
-	f_send_l3(ts_GMM_DET_REQ_MO(detach_type, power_off), bssgp_index);
+	f_send_l3(ts_GMM_DET_REQ_MO(detach_type, power_off), ran_index);
 	if (expect_purge) {
 		GSUP.receive(tr_GSUP_PURGE_MS_REQ(g_pars.imsi, OSMO_GSUP_CN_DOMAIN_PS));
 		GSUP.send(ts_GSUP_PURGE_MS_RES(g_pars.imsi));
@@ -1108,7 +1108,7 @@
 		setverdict(fail, "Unexpected GSUP PURGE MS for unregistered TLLI");
 		mtc.stop;
 		}
-	[power_off] BSSGP[bssgp_index].receive(tr_GMM_DET_ACCEPT_MT) -> value l3_mt {
+	[power_off] BSSGP[ran_index].receive(tr_GMM_DET_ACCEPT_MT) -> value l3_mt {
 		g_pars.ra := omit;
 		setverdict(fail, "Unexpected DETACH ACCEPT in power-off DETACH");
 		mtc.stop;
@@ -1117,12 +1117,12 @@
 	[power_off] T.timeout {
 		setverdict(pass);
 		}
-	[not power_off] BSSGP[bssgp_index].receive(tr_GMM_DET_ACCEPT_MT) -> value l3_mt {
+	[not power_off] BSSGP[ran_index].receive(tr_GMM_DET_ACCEPT_MT) -> value l3_mt {
 		g_pars.ra := omit;
 		setverdict(pass);
 		/* TODO: check if any PDP contexts are deactivated on network side? */
 		}
-	[] BSSGP[bssgp_index].receive(PDU_L3_SGSN_MS:?) -> value l3_mt {
+	[] BSSGP[ran_index].receive(PDU_L3_SGSN_MS:?) -> value l3_mt {
 		if (power_off) {
 			setverdict(fail, "Unexpected Layer 3 package received in power-off DETACH");
 		} else {
@@ -1130,7 +1130,7 @@
 		}
 		mtc.stop;
 		}
-	[] BSSGP[bssgp_index].receive { repeat; }
+	[] BSSGP[ran_index].receive { repeat; }
 	}
 }
 
