diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index b1f3a31..e06f496 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -429,7 +429,7 @@
 
 	/* expect BSC to disable the channel again if there's no response from MSC */
 	/* MS waits 20s (T3210) at LU; 10s (T3230) at CM SERV REQ and 5s (T3220) AT detach */
-	f_expect_chan_rel(0, chan_nr);
+	f_expect_chan_rel(0, chan_nr, expect_rll_rel_req := false);
 	setverdict(pass);
 }
 
@@ -450,7 +450,7 @@
 	BSSAP.send(ts_BSSAP_DISC_req(rx_c_ind.connectionId, 0));
 
 	/* expect BSC to disable the channel */
-	f_expect_chan_rel(0, chan_nr);
+	f_expect_chan_rel(0, chan_nr, expect_rll_rel_req := false);
 	setverdict(pass);
 }
 
@@ -817,32 +817,38 @@
 }
 
 function f_expect_chan_rel(integer bts_nr, RslChannelNr rsl_chan_nr,
-			   boolean handle_rll_rel := true) runs on test_CT {
+			   boolean expect_deact_sacch := true,
+			   boolean expect_rr_chan_rel := true,
+			   boolean expect_rll_rel_req := true,
+			   boolean handle_rll_rel := true
+			   ) runs on test_CT {
 
 	var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0));
 	var octetstring l3_rr_chan_rel := '060D00'O;
+	var boolean got_deact_sacch := false;
+	var boolean got_rr_chan_rel := false;
+	var boolean got_rll_rel_req := false;
+	log("f_expect_chan_rel() expecting: expect_deact_sacch=", expect_deact_sacch, " expect_rr_chan_rel=", expect_rr_chan_rel,
+	    " expect_rll_rel_req=", expect_rll_rel_req);
 	alt {
-	/* ignore DEACTIVATE SACCH (if any) */
 	[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,
 					tr_RSL_DEACT_SACCH(rsl_chan_nr))) {
+		got_deact_sacch := true;
 		repeat;
 	}
 	[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_DATA_REQ(rsl_chan_nr, ?, l3_rr_chan_rel))) {
+		got_rr_chan_rel := true;
 		repeat;
 	}
-	/* acknowledge RLL release (if any)*/
-	[handle_rll_rel] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,
+	[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,
 					tr_RSL_REL_REQ(rsl_chan_nr, ?))) {
+		got_rll_rel_req := true;
 		/* FIXME: Why are we getting this for LinkID SACCH? */
-		f_ipa_tx(0, ts_RSL_REL_CONF(rsl_chan_nr, main_dcch));
+		if (handle_rll_rel) {
+			f_ipa_tx(0, ts_RSL_REL_CONF(rsl_chan_nr, main_dcch));
+		}
 		repeat;
 	}
-	[not handle_rll_rel] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,
-					tr_RSL_REL_REQ(rsl_chan_nr, ?))) {
-		/* Do not reply, just continue */
-		repeat;
-	}
-	/* Expect RF channel release from BSC on Abis */
 	[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,
 						tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL))) {
 		/* respond with CHAN REL ACK */
@@ -853,6 +859,19 @@
 		repeat;
 		}
 	}
+
+	log("f_expect_chan_rel() summary: got_deact_sacch=", got_deact_sacch, " got_rr_chan_rel=", got_rr_chan_rel,
+	    " got_rll_rel_req=", got_rll_rel_req);
+
+	if (expect_deact_sacch != got_deact_sacch) {
+		setverdict(fail, "f_expect_chan_rel(): expect_deact_sacch=", expect_deact_sacch, " got_deact_sacch=", got_deact_sacch);
+	}
+	if (expect_rr_chan_rel != got_rr_chan_rel) {
+		setverdict(fail, "f_expect_chan_rel(): expect_rr_chan_rel=", expect_rr_chan_rel, " got_rr_chan_rel=", got_rr_chan_rel);
+	}
+	if (expect_rll_rel_req != got_rll_rel_req) {
+		setverdict(fail, "f_expect_chan_rel(): expect_rll_rel_req=", expect_rll_rel_req, " got_rll_rel_req=", got_rll_rel_req);
+	}
 }
 
 /* Test behavior of channel release after hard Clear Command from MSC */
@@ -874,7 +893,7 @@
 		BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
 	}
 
-	f_expect_chan_rel(0, dt.rsl_chan_nr);
+	f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false);
 	setverdict(pass);
 }
 
@@ -889,7 +908,7 @@
 	/* release the SCCP connection */
 	BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
 
-	f_expect_chan_rel(0, dt.rsl_chan_nr);
+	f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false);
 	setverdict(pass);
 }
 
@@ -904,7 +923,7 @@
 	/* release the SCCP connection */
 	BSSAP.send(ts_BSSAP_DISC_req(dt.sccp_conn_id, 0));
 
-	f_expect_chan_rel(0, dt.rsl_chan_nr, handle_rll_rel := false);
+	f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false);
 	setverdict(pass);
 }
 
@@ -926,7 +945,7 @@
 	[] BSSAP.receive(tr_BSSAP_DISC_ind(dt.sccp_conn_id, ?, ?)) { }
 	}
 
-	f_expect_chan_rel(0, dt.rsl_chan_nr);
+	f_expect_chan_rel(0, dt.rsl_chan_nr, expect_rll_rel_req := false);
 	setverdict(pass);
 }
 
