diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index c9553a3..e855405 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -5838,6 +5838,61 @@
 	setverdict(pass);
 }
 
+/* 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 PCUIF_send_data sd;
+	timer T;
+
+	f_init_with_pcuif();
+	f_TC_pcu_act_req(0, 0, 7, true);
+
+	/* We need trxcon for NOPE indications */
+	f_init_l1ctl();
+	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
+	);
+
+	/* 4 SACCH periods => 4 reports (plus some guard time) */
+	var float Tval := int2float(4 * 480) / 1000.0 + 0.5;
+
+	/* Let it some time to stabilize */
+	f_sleep(0.5);
+	PCU.clear;
+
+	T.start(Tval);
+	alt {
+	[] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_interf_ind)) -> value sd {
+		/* Check TDMA frame number period */
+		if (sd.data.u.interf_ind.fn mod 104 != 0) {
+			setverdict(fail, "Odd TDMA frame number := ",
+				   sd.data.u.interf_ind.fn);
+		}
+		interf_ind_num := interf_ind_num + 1;
+		if (interf_ind_num < 4)
+			{ repeat; }
+		}
+	[] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_INTERF_IND(0, 0))) -> value sd {
+		setverdict(fail, "Received unexpected interference report: ", sd.data);
+		}
+	[] PCU.receive { repeat; }
+	[] T.timeout {
+		setverdict(fail, "Timeout waiting for interference reports");
+		}
+	}
+
+	Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
+}
+
 /***********************************************************************
  * Osmocom Style Dynamic Timeslot Support
  ***********************************************************************/
@@ -7492,6 +7547,7 @@
 		execute( TC_pcu_socket_nsvc_ipv4() );
 		execute( TC_pcu_socket_nsvc_ipv6() );
 		execute( TC_pcu_socket_two_nsvc() );
+		execute( TC_pcu_interf_ind() );
 	} else {
 		log("PCU socket path not available, skipping PCU tests");
 	}
