diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 4466ad4..bd6785e 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -4899,7 +4899,8 @@
 }
 
 /* Ensure that GPRS capability is not advertised before PCU socket conncet */
-private function f_get_si3(L1CTL_PT pt) runs on test_CT return SystemInformationType3 {
+private function f_get_si(L1CTL_PT pt, RrMessageType si_type)
+runs on test_CT return SystemInformation {
 	var L1ctlDlMessage l1_dl;
 	var SystemInformation si;
 	timer T := 5.0;
@@ -4912,7 +4913,7 @@
 			repeat;
 		}
 		si := dec_SystemInformation(l1_dl.payload.data_ind.payload)
-		if (not ischosen(si.payload.si3)) {
+		if (si.header.message_type != si_type) {
 			repeat;
 		}
 		}
@@ -4920,10 +4921,11 @@
 		repeat;
 		}
 	[] T.timeout {
-		Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for SI3");
+		Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
+					log2str("Timeout waiting for ", si_type));
 		}
 	}
-	return si.payload.si3;
+	return si;
 }
 
 private function f_si3_has_gprs_indicator(RestOctets ro) return boolean {
@@ -4932,7 +4934,7 @@
 }
 
 testcase TC_pcu_socket_noconnect_nosi3gprs() runs on test_CT {
-	var SystemInformationType3 si3;
+	var SystemInformation si;
 	timer T := 5.0;
 
 	/* don't call f_init() as this would connect PCU socket */
@@ -4951,8 +4953,8 @@
 
 	f_sleep(2.0);
 	L1CTL.clear;
-	si3 := f_get_si3(L1CTL);
-	if (f_si3_has_gprs_indicator(si3.rest_octets)) {
+	si := f_get_si(L1CTL, SYSTEM_INFORMATION_TYPE_3);
+	if (f_si3_has_gprs_indicator(si.payload.si3.rest_octets)) {
 		setverdict(fail, "SI3 indicates GPRS even before PCU socket connected");
 	} else {
 		setverdict(pass);
@@ -4962,7 +4964,7 @@
 
 /* Ensure that GPRS capability is advertised after PCU socket connect */
 testcase TC_pcu_socket_connect_si3gprs() runs on test_CT {
-	var SystemInformationType3 si3;
+	var SystemInformation si;
 
 	/* this (among other things) establishes the first connection to the PCUIF socket */
 	f_init();
@@ -4971,8 +4973,8 @@
 
 	f_sleep(2.0);
 	L1CTL.clear;
-	si3 := f_get_si3(L1CTL);
-	if (not f_si3_has_gprs_indicator(si3.rest_octets)) {
+	si := f_get_si(L1CTL, SYSTEM_INFORMATION_TYPE_3);
+	if (not f_si3_has_gprs_indicator(si.payload.si3.rest_octets)) {
 		setverdict(fail, "SI3 indicates no GPRS despite PCU socket connected");
 	} else {
 		setverdict(pass);
@@ -4982,7 +4984,7 @@
 
 /* Ensure that GPRS capability is no longer advertised after PCU socket disconnect */
 testcase TC_pcu_socket_disconnect_nosi3gprs() runs on test_CT {
-	var SystemInformationType3 si3;
+	var SystemInformation si;
 
 	/* this (among other things) establishes the first connection to the PCUIF socket */
 	f_init();
@@ -5000,8 +5002,8 @@
 
 	f_sleep(2.0);
 	L1CTL.clear;
-	si3 := f_get_si3(L1CTL);
-	if (f_si3_has_gprs_indicator(si3.rest_octets)) {
+	si := f_get_si(L1CTL, SYSTEM_INFORMATION_TYPE_3);
+	if (f_si3_has_gprs_indicator(si.payload.si3.rest_octets)) {
 		setverdict(fail, "SI3 indicates GPRS after PCU socket disconnected");
 	} else {
 		setverdict(pass);
