diff --git a/bts/BTS_Tests_LAPDm.ttcn b/bts/BTS_Tests_LAPDm.ttcn
index 7f5017d..05c1a71 100644
--- a/bts/BTS_Tests_LAPDm.ttcn
+++ b/bts/BTS_Tests_LAPDm.ttcn
@@ -1392,6 +1392,73 @@
 	f_testmatrix_each_chan(pars, refers(f_TC_normal_reestablishment));
 }
 
+/* Test procedure for normal reestablishment in state LAPD_STATE_TIMER_RECOV (after T200, waiting for Ack), as per:
+ * OS#4819
+ * 3GPP TS 44.006 8.4.1.2 "Normal establishment procedure"
+ * 3GPP TS 44.006 8.4.2.1 "General requirements"
+ * 3GPP TS 44.006 8.6.3 "Procedures for re-establishment"
+ * */
+private function f_TC_normal_reestablishment_state_unacked(charstring id) runs on ConnHdlr {
+	var RslLinkId link_id := valueof(ts_RslLinkID_DCCH(0))
+	var octetstring l3_mo := f_rnd_octstring(c_TS0406_MAX_L3_OCTETS);
+	var octetstring l3_mt := f_rnd_octstring(20);
+	var LapdmDlState dls;
+	var default d;
+	timer T := 3.0;
+	var boolean use_sacch := false;
+	var boolean received_estind := false;
+	var boolean received_ua := false;
+
+	fp_common_init();
+
+	/* some common altstep for meas res and other background noise */
+	d := activate(as_ignore_background(true));
+	RSL.clear;
+	LAPDM.clear;
+
+	f_establish_mo(link_id);
+	RSL.send(ts_RSL_DATA_REQ(g_chan_nr, link_id, l3_mt));
+	/* first transmission, P = 0 */
+	LAPDM.receive(t_PH_DATA(0, use_sacch, tr_LAPDm_I(link_id.sapi, c_r:=cr_MT_CMD, p:=false,
+							 nr:=0, ns:=0, l3:=l3_mt)));
+	/* re-transmission, P = 1 */
+	LAPDM.receive(t_PH_DATA(0, use_sacch, tr_LAPDm_I(link_id.sapi, c_r:=cr_MT_CMD, p:=true,
+							 nr:=0, ns:=0, l3:=l3_mt)));
+	deactivate(d);
+
+	/* We received one retrans, so peer is in LAPD_STATE_TIMER_RECOV state. Now send SABM: */
+	LAPDM.send(t_PH_DATA(link_id.sapi, use_sacch, ts_LAPDm_SABM(link_id.sapi, c_r:=cr_MO_CMD, p:=true, l3:=''O)));
+	T.start
+	alt {
+	[] LAPDM.receive(t_PH_DATA(?, use_sacch, tr_LAPDm_UA(link_id.sapi, cr_MT_RSP, f:=true, l3:=''O))) {
+		received_ua := true;
+		if (not received_estind) {
+			repeat;
+		}
+		}
+	[] RSL.receive(tr_RSL_EST_IND_NOL3(g_chan_nr, link_id)) {
+		received_estind := true;
+		if (not received_ua) {
+			repeat;
+		}
+	}
+	[] RSL.receive { repeat; }
+	[] LAPDM.receive { repeat; }
+	[] T.timeout { setverdict(fail, "Timeout waiting for UA"); }
+	}
+
+	/* Test we can still send data afterwards */
+	l3_mo := f_rnd_octstring(c_TS0406_MAX_L3_OCTETS);
+	dls := valueof(t_init_LapdmDlState);
+	f_lapdm_transceive_mo(dls, link_id, l3_mo);
+
+	fp_common_fini();
+}
+testcase TC_normal_reestablishment_state_unacked() runs on test_CT {
+	var ConnHdlrPars pars := valueof(t_Pars(t_RslChanNr_Bm(1), ts_RSL_ChanMode_SIGN));
+	f_testmatrix_each_chan(pars, refers(f_TC_normal_reestablishment_state_unacked));
+}
+
 control {
 	execute(TC_sabm_ua_dcch_sapi0());
 	execute(TC_sabm_ua_dcch_sapi0_nopayload());
@@ -1415,6 +1482,7 @@
 	execute(TC_incorrect_cr());
 	execute(TC_sabm_incorrect_c());
 	execute(TC_normal_reestablishment());
+	execute(TC_normal_reestablishment_state_unacked());
 }
 
 }
