diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn
index 5e4555d..dce1ef3 100644
--- a/gbproxy/GBProxy_Tests.ttcn
+++ b/gbproxy/GBProxy_Tests.ttcn
@@ -537,20 +537,32 @@
 
 /* Send 'tx' on PTP-BVCI from PCU; expect 'rx' on SGSN */
 friend function f_pcu2sgsn(template (value) PDU_BSSGP tx, template (present) PDU_BSSGP exp_rx,
-			   integer pcu_idx := 0, integer sgsn_idx := 0) runs on BSSGP_ConnHdlr {
+			   integer pcu_idx := 0, integer sgsn_idx := 0, boolean use_sig := false) runs on BSSGP_ConnHdlr {
 	var PDU_BSSGP rx;
 	timer T := 1.0;
 
-	PCU[pcu_idx].send(tx);
+	if (use_sig) {
+		PCU_SIG[pcu_idx].send(tx);
+	} else {
+		PCU[pcu_idx].send(tx);
+	}
+
 	T.start;
 	alt {
-	[] SGSN[sgsn_idx].receive(exp_rx) {
+	[use_sig] SGSN_SIG[sgsn_idx].receive(exp_rx) {
+		setverdict(pass);
+		}
+	[not use_sig] SGSN[sgsn_idx].receive(exp_rx) {
 		setverdict(pass);
 		}
 	[] SGSN[sgsn_idx].receive(PDU_BSSGP:?) -> value rx {
 		setverdict(fail, "Unexpected BSSGP on SGSN side: ", rx);
 		mtc.stop;
 		}
+	[] SGSN_SIG[sgsn_idx].receive(PDU_BSSGP:?) -> value rx {
+		setverdict(fail, "Unexpected SIG BSSGP on SGSN side: ", rx);
+		mtc.stop;
+		}
 	[] T.timeout {
 		setverdict(fail, "Timeout waiting for BSSGP on SGSN side: ", rx);
 		mtc.stop;
@@ -560,20 +572,32 @@
 
 /* Send 'tx' on PTP-BVCI from SGSN; expect 'rx' on PCU */
 friend function f_sgsn2pcu(template (value) PDU_BSSGP tx, template (present) PDU_BSSGP exp_rx,
-			   integer sgsn_idx:= 0, integer pcu_idx := 0) runs on BSSGP_ConnHdlr {
+			   integer sgsn_idx:= 0, integer pcu_idx := 0, boolean use_sig := false) runs on BSSGP_ConnHdlr {
 	var PDU_BSSGP rx;
 	timer T := 1.0;
 
-	SGSN[sgsn_idx].send(tx);
+	if (use_sig) {
+		SGSN_SIG[sgsn_idx].send(tx);
+	} else {
+		SGSN[sgsn_idx].send(tx);
+	}
+
 	T.start;
 	alt {
-	[] PCU[pcu_idx].receive(exp_rx) {
+	[use_sig] PCU_SIG[pcu_idx].receive(exp_rx) {
+		setverdict(pass);
+		}
+	[not use_sig] PCU[pcu_idx].receive(exp_rx) {
 		setverdict(pass);
 		}
 	[] PCU[pcu_idx].receive(PDU_BSSGP:?) -> value rx {
 		setverdict(fail, "Unexpected BSSGP on PCU side: ", rx);
 		mtc.stop;
 		}
+	[] PCU_SIG[pcu_idx].receive(PDU_BSSGP:?) -> value rx {
+		setverdict(fail, "Unexpected SIG BSSGP on PCU side: ", rx);
+		mtc.stop;
+		}
 	[] T.timeout {
 		setverdict(fail, "Timeout waiting for BSSGP on PCU side: ", rx);
 		mtc.stop;
