diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index eeb305f..1d3dfe7 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -6258,7 +6258,6 @@
 /* Verify periodic interference reports on PDCH */
 testcase TC_pcu_interf_ind() runs on test_CT {
 	var template PCUIF_Message tr_interf_ind;
-	var template PCUIF_interf ts_interf;
 	var integer interf_ind_num := 0;
 	var boolean first := true;
 	var PCUIF_send_data sd;
@@ -6277,12 +6276,11 @@
 	f_l1_tune(L1CTL);
 
 	/* Expect -120 .. -90 dBm on TS7 of BTS0/TRX0 */
-	ts_interf := { 0, 0, 0, 0, 0, 0, 0, (90..120) };
 	tr_interf_ind := tr_PCUIF_INTERF_IND(
 		bts_nr := 0,
 		trx_nr := 0,
 		fn := ?,
-		interf := ts_interf
+		interf := { 0, 0, 0, 0, 0, 0, 0, (90..120) }
 	);
 
 	T.start(0.480 * 1.5);
@@ -7375,7 +7373,7 @@
 }
 
 /* Verify RF RESource INDication messages (periodically sent over the RSL) */
-private function f_TC_rsl_rf_resource_ind(template RSL_ResourceInfo info)
+private function f_TC_rsl_rf_resource_ind(template (present) RSL_ResourceInfo info)
 runs on test_CT {
 	const IpaStreamId sid := IPAC_PROTO_RSL_TRX0;
 	var ASP_RSL_Unitdata ud;
@@ -8248,7 +8246,7 @@
 	f_init();
 
 	/* Verify lower and upper RxQual thresholds */
-	var template TopTestCase top := {
+	var template (value) TopTestCase top := {
 		bs_power := ts_RSL_IE_BS_Power(4), /* 4 x 2dB = 8dB */
 		top_cap := ts_RSL_IE_OSMO_TopAcchCap(4), /* 4dB */
 		steps := {
@@ -8295,7 +8293,7 @@
 	f_init();
 
 	/* Verify handling of FULL and SUB values */
-	var template TopTestCase top := {
+	var template (value) TopTestCase top := {
 		bs_power := ts_RSL_IE_BS_Power(4), /* 4 x 2dB = 8dB */
 		top_cap := ts_RSL_IE_OSMO_TopAcchCap(4), /* 4dB */
 		steps := {
@@ -8336,7 +8334,7 @@
 	f_init();
 
 	/* Overpower is always on, SACCH disabled */
-	var template TopTestCase top := {
+	var template (value) TopTestCase top := {
 		bs_power := ts_RSL_IE_BS_Power(4), /* 4 x 2dB = 8dB */
 		top_cap := ts_RSL_IE_OSMO_TopAcchCap(overpower := 4, /* 4dB */
 						     rxqual := 0, /* always on */
@@ -8368,7 +8366,7 @@
 	f_init();
 
 	/* Overpower is always on, FACCH disabled */
-	var template TopTestCase top := {
+	var template (value) TopTestCase top := {
 		bs_power := ts_RSL_IE_BS_Power(4), /* 4 x 2dB = 8dB */
 		top_cap := ts_RSL_IE_OSMO_TopAcchCap(overpower := 4, /* 4dB */
 						     rxqual := 0, /* always on */
@@ -8400,7 +8398,7 @@
 	f_init();
 
 	/* Overpower higher than current power reduction level (2dB) */
-	var template TopTestCase top := {
+	var template (value) TopTestCase top := {
 		bs_power := ts_RSL_IE_BS_Power(1), /* 1 x 2dB = 2dB */
 		top_cap := ts_RSL_IE_OSMO_TopAcchCap(overpower := 4, /* 4dB */
 						     rxqual := 0 /* always on */),
