diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 1ff0c61..587e14a 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -1296,6 +1296,14 @@
 	return false;
 }
 
+private function ra_is_emerg(OCT1 ra) return boolean {
+	/* See also: 3GPP TS 04.08, Table 9.9, ra=101xxxxx */
+	if ((ra and4b 'E0'O == 'A0'O) and (ra and4b '1F'O != '1F'O)) {
+		return true;
+	}
+	return false;
+}
+
 /* generate a random RACH for circuit-switched */
 private function f_rnd_ra_cs() return OCT1 {
 	var OCT1 ra;
@@ -1305,6 +1313,15 @@
 	return ra;
 }
 
+/* generate a random RACH for emergency */
+private function f_rnd_ra_emerg() return OCT1 {
+	var OCT1 ra;
+	do {
+		ra := f_rnd_octstring(1);
+	} while (not ra_is_emerg(ra));
+	return ra;
+}
+
 /* generate a random RACH for packet-switched */
 private function f_rnd_ra_ps() return OCT1 {
 	var OCT1 ra;
@@ -1321,7 +1338,7 @@
 }
 
 /* Send 1000 RACH requests and check their RA+FN on the RSL side */
-testcase TC_rach_content() runs on test_CT {
+private function f_TC_rach_content(boolean emerg) runs on test_CT {
 	f_init();
 	f_init_l1ctl();
 	f_l1_tune(L1CTL);
@@ -1329,7 +1346,12 @@
 	var GsmFrameNumber fn_last := 0;
 	var boolean test_failed := false;
 	for (var integer i := 0; i < 1000; i := i+1) {
-		var OCT1 ra := f_rnd_ra_cs();
+		var OCT1 ra := f_rnd_ra_emerg();
+		if (emerg == true) {
+			ra := f_rnd_ra_emerg();
+		} else {
+			ra := f_rnd_ra_cs();
+		}
 		var GsmFrameNumber fn := f_L1CTL_RACH(L1CTL, oct2int(ra));
 		if (fn == fn_last) {
 			Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Two RACH in same FN?!?");
@@ -1359,6 +1381,16 @@
 	Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
 }
 
+/* Normal variant */
+testcase TC_rach_content() runs on test_CT {
+	 f_TC_rach_content(emerg := false);
+}
+
+/* Emergency call variant */
+testcase TC_rach_content_emerg() runs on test_CT {
+	 f_TC_rach_content(emerg := true);
+}
+
 /* Send 1000 RACH Requests (flood ~ 89/s) and count if count(Abis) == count(Um) */
 testcase TC_rach_count() runs on test_CT {
 	f_init();
@@ -6683,6 +6715,7 @@
 	execute( TC_sacch_chan_act_ho_async() );
 	execute( TC_sacch_chan_act_ho_sync() );
 	execute( TC_rach_content() );
+	execute( TC_rach_content_emerg() );
 	execute( TC_rach_count() );
 	execute( TC_rach_max_ta() );
 	execute( TC_ho_rach() );
