diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn
index e951400..fb2d888 100644
--- a/msc/BSC_ConnectionHandler.ttcn
+++ b/msc/BSC_ConnectionHandler.ttcn
@@ -642,6 +642,24 @@
 	setverdict(pass);
 }
 
+function f_expect_lu_reject() runs on BSC_ConnHdlr {
+	var PDU_DTAP_MT dtap_mt;
+	timer T := 5.0;
+
+	T.start;
+	alt {
+	[] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) {
+		setverdict(pass);
+		}
+	[] BSSAP.receive(tr_PDU_DTAP_MT(?)) -> value dtap_mt {
+		setverdict(fail, "Expected LU reject BSSAP message, got: ", dtap_mt);
+		}
+	[] T.timeout {
+		setverdict(fail, "Timeout waiting for LU reject");
+		}
+	}
+}
+
 function f_foo() runs on BSC_ConnHdlr{
 	/* SCCP CC handled by RAN_Emulation_CT.main() */
 	/* Expect auth, if enabled */
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index 15ff17c..c463dd5 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -5601,7 +5601,6 @@
 
 private function f_tc_lu_imsi_auth_tmsi_check_imei_nack(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
 	var PDU_ML3_MS_NW l3_lu;
-	var PDU_DTAP_MT dtap_mt;
 
 	pars.net.expect_auth := true;
 	pars.net.expect_imei := true;
@@ -5617,17 +5616,7 @@
 	f_mm_common();
 	f_msc_lu_hlr();
 	f_mm_imei();
-
-	/* Expect reject */
-	alt {
-	[] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) {
-		setverdict(pass);
-		}
-	[] BSSAP.receive(tr_PDU_DTAP_MT(?)) -> value dtap_mt {
-		setverdict(fail, "Expected LU reject BSSAP message, got: ", dtap_mt);
-		mtc.stop;
-		}
-	}
+	f_expect_lu_reject();
 	f_expect_clear();
 }
 testcase TC_lu_imsi_auth_tmsi_check_imei_nack() runs on MTC_CT {
@@ -5642,7 +5631,6 @@
 
 private function f_tc_lu_imsi_auth_tmsi_check_imei_err(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
 	var PDU_ML3_MS_NW l3_lu;
-	var PDU_DTAP_MT dtap_mt;
 
 	pars.net.expect_auth := true;
 	pars.net.expect_imei := true;
@@ -5658,17 +5646,7 @@
 	f_mm_common();
 	f_msc_lu_hlr();
 	f_mm_imei();
-
-	/* Expect reject */
-	alt {
-	[] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) {
-		setverdict(pass);
-		}
-	[] BSSAP.receive(tr_PDU_DTAP_MT(?)) -> value dtap_mt {
-		setverdict(fail, "Expected LU reject BSSAP message, got: ", dtap_mt);
-		mtc.stop;
-		}
-	}
+	f_expect_lu_reject();
 	f_expect_clear();
 }
 testcase TC_lu_imsi_auth_tmsi_check_imei_err() runs on MTC_CT {
@@ -5746,7 +5724,6 @@
 
 private function f_tc_lu_imsi_auth_tmsi_check_imei_early_nack(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
 	var PDU_ML3_MS_NW l3_lu;
-	var PDU_DTAP_MT dtap_mt;
 
 	pars.net.expect_auth := true;
 	pars.net.expect_imei_early := true;
@@ -5760,17 +5737,7 @@
 	BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
 
 	f_mm_imei_early();
-
-	/* Expect reject */
-	alt {
-	[] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) {
-		setverdict(pass);
-		}
-	[] BSSAP.receive(tr_PDU_DTAP_MT(?)) -> value dtap_mt {
-		setverdict(fail, "Expected LU reject BSSAP message, got: ", dtap_mt);
-		mtc.stop;
-		}
-	}
+	f_expect_lu_reject();
 	f_expect_clear();
 }
 testcase TC_lu_imsi_auth_tmsi_check_imei_early_nack() runs on MTC_CT {
@@ -5785,7 +5752,6 @@
 
 private function f_tc_lu_imsi_auth_tmsi_check_imei_early_err(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
 	var PDU_ML3_MS_NW l3_lu;
-	var PDU_DTAP_MT dtap_mt;
 
 	pars.net.expect_auth := true;
 	pars.net.expect_imei_early := true;
@@ -5799,17 +5765,7 @@
 	BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
 
 	f_mm_imei_early();
-
-	/* Expect reject */
-	alt {
-	[] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) {
-		setverdict(pass);
-		}
-	[] BSSAP.receive(tr_PDU_DTAP_MT(?)) -> value dtap_mt {
-		setverdict(fail, "Expected LU reject BSSAP message, got: ", dtap_mt);
-		mtc.stop;
-		}
-	}
+	f_expect_lu_reject();
 	f_expect_clear();
 }
 testcase TC_lu_imsi_auth_tmsi_check_imei_early_err() runs on MTC_CT {
