diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn
index 9fc0616..93a311e 100644
--- a/msc/BSC_ConnectionHandler.ttcn
+++ b/msc/BSC_ConnectionHandler.ttcn
@@ -379,34 +379,39 @@
 	return l3_info;
 }
 
+altstep as_GSUP_SAI() runs on BSC_ConnHdlr {
+var GSUP_IE auth_tuple;
+[] GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi)) {
+	if (g_pars.use_umts_aka) {
+		g_pars.vec := f_gen_auth_vec_3g();
+		auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G3G(g_pars.vec.rand,
+								g_pars.vec.sres,
+								g_pars.vec.kc,
+								g_pars.vec.ik,
+								g_pars.vec.ck,
+								g_pars.vec.autn,
+								g_pars.vec.res));
+		GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
+	} else {
+		g_pars.vec := f_gen_auth_vec_2g();
+		auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G(g_pars.vec.rand,
+								g_pars.vec.sres,
+								g_pars.vec.kc));
+		GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
+	}
+	}
+}
+
 function f_mm_auth() runs on BSC_ConnHdlr
 {
 	if (g_pars.net.expect_auth) {
-		var GSUP_IE auth_tuple;
-		GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi));
-
+		as_GSUP_SAI();
 		if (g_pars.use_umts_aka) {
-			g_pars.vec := f_gen_auth_vec_3g();
-			auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G3G(g_pars.vec.rand,
-									g_pars.vec.sres,
-									g_pars.vec.kc,
-									g_pars.vec.ik,
-									g_pars.vec.ck,
-									g_pars.vec.autn,
-									g_pars.vec.res));
-			GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
-
 			BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_AUTH_REQ_3G(g_pars.vec.rand, g_pars.vec.autn)));
 			var OCT4 res := substr(g_pars.vec.res, 0, 4);
 			var OCT4 xres := substr(g_pars.vec.res, 4, 4);
 			BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_3G(res, xres)));
 		} else {
-			g_pars.vec := f_gen_auth_vec_2g();
-			auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G(g_pars.vec.rand,
-									g_pars.vec.sres,
-									g_pars.vec.kc));
-			GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
-
 			BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_AUTH_REQ(g_pars.vec.rand)));
 			BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_2G(g_pars.vec.sres)));
 		}
