diff --git a/hlr/HLR_Tests.ttcn b/hlr/HLR_Tests.ttcn
index e32fa68..da6ad7c 100644
--- a/hlr/HLR_Tests.ttcn
+++ b/hlr/HLR_Tests.ttcn
@@ -783,8 +783,9 @@
 					ussd_string := "*#200#");
 	GSUP.send(valueof(ts_GSUP_PROC_SS_REQ(g_pars.sub.imsi, g_pars.ussd.sid,
 						OSMO_GSUP_SESSION_STATE_BEGIN, ss)));
-	f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid, OSMO_GSUP_SESSION_STATE_END,
-		    tr_SS_FACILITY_RETURN_ERROR(1, 18));
+	res := f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid,
+			   OSMO_GSUP_SESSION_STATE_END,
+			   tr_SS_FACILITY_RETURN_ERROR(1, 18));
 }
 testcase TC_mo_ussd_unknown() runs on test_CT {
 	var HlrSubscriberList sl;
@@ -809,8 +810,9 @@
 					ussd_string := "*100#");
 	GSUP.send(valueof(ts_GSUP_PROC_SS_REQ(g_pars.sub.imsi, g_pars.ussd.sid,
 						OSMO_GSUP_SESSION_STATE_BEGIN, ss)));
-	f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid, OSMO_GSUP_SESSION_STATE_END,
-		    tr_SS_FACILITY_RETURN_ERROR(1, 34));
+	res := f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid,
+			   OSMO_GSUP_SESSION_STATE_END,
+			   tr_SS_FACILITY_RETURN_ERROR(1, 34));
 }
 testcase TC_mo_ussd_euse_disc() runs on test_CT {
 	var HlrSubscriberList sl;
@@ -837,8 +839,10 @@
 	GSUP.send(valueof(ts_GSUP_PROC_SS_REQ(g_pars.sub.imsi, g_pars.ussd.sid,
 						OSMO_GSUP_SESSION_STATE_BEGIN, ss)));
 	resp_str := "Your IMSI is " & hex2str(g_pars.sub.imsi);
-	f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid, OSMO_GSUP_SESSION_STATE_END,
-		    tr_SS_USSD_FACILITY_RETURN_RESULT(1, 59, SS_USSD_DEFAULT_DCS, f_encGSM7bit(resp_str)));
+	res := f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid,
+			   OSMO_GSUP_SESSION_STATE_END,
+			   tr_SS_USSD_FACILITY_RETURN_RESULT(1, 59, SS_USSD_DEFAULT_DCS,
+							     f_encGSM7bit(resp_str)));
 }
 testcase TC_mo_ussd_iuse_imsi() runs on test_CT {
 	var HlrSubscriberList sl;
@@ -865,8 +869,10 @@
 	GSUP.send(valueof(ts_GSUP_PROC_SS_REQ(g_pars.sub.imsi, g_pars.ussd.sid,
 						OSMO_GSUP_SESSION_STATE_BEGIN, ss)));
 	resp_str := "Your extension is " & hex2str(g_pars.sub.msisdn);
-	f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid, OSMO_GSUP_SESSION_STATE_END,
-		    tr_SS_USSD_FACILITY_RETURN_RESULT(1, 59, SS_USSD_DEFAULT_DCS, f_encGSM7bit(resp_str)));
+	res := f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid,
+			   OSMO_GSUP_SESSION_STATE_END,
+			   tr_SS_USSD_FACILITY_RETURN_RESULT(1, 59, SS_USSD_DEFAULT_DCS,
+							     f_encGSM7bit(resp_str)));
 }
 testcase TC_mo_ussd_iuse_msisdn() runs on test_CT {
 	var HlrSubscriberList sl;
@@ -893,8 +899,10 @@
 					ussd_string := "*100#");
 	GSUP.send(valueof(ts_GSUP_PROC_SS_REQ(g_pars.sub.imsi, g_pars.ussd.sid,
 						OSMO_GSUP_SESSION_STATE_BEGIN, ss)));
-	f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid, OSMO_GSUP_SESSION_STATE_END,
-		    tr_SS_USSD_FACILITY_RETURN_RESULT(1, 59, SS_USSD_DEFAULT_DCS, f_encGSM7bit("*100#")));
+	res := f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid,
+			   OSMO_GSUP_SESSION_STATE_END,
+			   tr_SS_USSD_FACILITY_RETURN_RESULT(1, 59, SS_USSD_DEFAULT_DCS,
+							     f_encGSM7bit("*100#")));
 }
 testcase TC_mo_ussd_euse() runs on test_CT {
 	var HlrSubscriberList sl;
@@ -925,8 +933,10 @@
 	GSUP.send(valueof(ts_GSUP_PROC_SS_REQ(g_pars.sub.imsi, g_pars.ussd.sid,
 						OSMO_GSUP_SESSION_STATE_BEGIN, ss)));
 	/* expect echo response from EUSE */
-	f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid, OSMO_GSUP_SESSION_STATE_CONTINUE,
-		    tr_SS_USSD_FACILITY_RETURN_RESULT(1, 59, SS_USSD_DEFAULT_DCS, f_encGSM7bit("*100#")));
+	res := f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid,
+			   OSMO_GSUP_SESSION_STATE_CONTINUE,
+			   tr_SS_USSD_FACILITY_RETURN_RESULT(1, 59, SS_USSD_DEFAULT_DCS,
+							     f_encGSM7bit("*100#")));
 
 	/* Simulate CONTINUE from MS/MSC */
 	ss := f_USSD_FACILITY_IE_INVOKE(op_code := SS_OP_CODE_PROCESS_USS_REQ,
@@ -935,9 +945,10 @@
 						OSMO_GSUP_SESSION_STATE_CONTINUE, ss)));
 
 	/* expect echo response from EUSE */
-	f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid, OSMO_GSUP_SESSION_STATE_END,
-		    tr_SS_USSD_FACILITY_RETURN_RESULT(1, 59, SS_USSD_DEFAULT_DCS,
-						      f_encGSM7bit("mahlzeit")));
+	res := f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid,
+			   OSMO_GSUP_SESSION_STATE_END,
+			   tr_SS_USSD_FACILITY_RETURN_RESULT(1, 59, SS_USSD_DEFAULT_DCS,
+							     f_encGSM7bit("mahlzeit")));
 }
 testcase TC_mo_ussd_euse_continue() runs on test_CT {
 	var HlrSubscriberList sl;
@@ -969,8 +980,10 @@
 					ussd_string := "*999#");
 	GSUP.send(valueof(ts_GSUP_PROC_SS_REQ(g_pars.sub.imsi, g_pars.ussd.sid,
 						OSMO_GSUP_SESSION_STATE_BEGIN, ss)));
-	f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid, OSMO_GSUP_SESSION_STATE_END,
-		    tr_SS_USSD_FACILITY_RETURN_RESULT(1, 59, SS_USSD_DEFAULT_DCS, f_encGSM7bit("*999#")));
+	res := f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid,
+			   OSMO_GSUP_SESSION_STATE_END,
+			   tr_SS_USSD_FACILITY_RETURN_RESULT(1, 59, SS_USSD_DEFAULT_DCS,
+							     f_encGSM7bit("*999#")));
 }
 testcase TC_mo_ussd_euse_defaultroute() runs on test_CT {
 	var HlrSubscriberList sl;
@@ -1004,6 +1017,7 @@
  */
 private function f_TC_mo_sss_reject() runs on HLR_ConnHdlr {
 	var SS_FacilityInformation ss_req;
+	var GSUP_PDU res;
 
 	/* Prepare '*#21#' SS request */
 	ss_req := valueof(ts_SS_FACILITY_INVOKE(
@@ -1019,9 +1033,9 @@
 		enc_SS_FacilityInformation(ss_req))));
 
 	/* Expect ReturnError with FACILITY_NOT_SUPPORTED */
-	f_SS_expect(g_pars.sub.imsi,
-		g_pars.ussd.sid, OSMO_GSUP_SESSION_STATE_END,
-		tr_SS_FACILITY_RETURN_ERROR(0, 21));
+	res := f_SS_expect(g_pars.sub.imsi, g_pars.ussd.sid,
+			   OSMO_GSUP_SESSION_STATE_END,
+			   tr_SS_FACILITY_RETURN_ERROR(0, 21));
 }
 testcase TC_mo_sss_reject() runs on test_CT {
 	var HLR_ConnHdlrPars pars;
