diff --git a/src/gprs_ms.c b/src/gprs_ms.c
index c9eaf97..073dd4a 100644
--- a/src/gprs_ms.c
+++ b/src/gprs_ms.c
@@ -1160,6 +1160,22 @@
 	return ul_tbf;
 }
 
+/* Create a temporary dummy TBF to Tx a ImmAssReject if allocating a new one during
+ * packet resource Request failed. This is similar as ul_tbf_alloc() but without
+ * calling tbf->setup() (in charge of TFI/USF allocation), and reusing resources
+ * from Packet Resource Request we received. See TS 44.060 sec 7.1.3.2.1  */
+struct gprs_rlcmac_ul_tbf *ms_new_ul_tbf_rejected_pacch(struct GprsMs *ms, struct gprs_rlcmac_pdch *pdch)
+{
+	struct gprs_rlcmac_ul_tbf *ul_tbf;
+	ul_tbf = ul_tbf_alloc_rejected(ms->bts, ms, pdch);
+	if (!ul_tbf)
+		return NULL;
+	osmo_fsm_inst_dispatch(tbf_state_fi(ul_tbf_as_tbf(ul_tbf)), TBF_EV_ASSIGN_ADD_PACCH, NULL);
+	osmo_fsm_inst_dispatch(tbf_ul_ass_fi(ul_tbf_as_tbf(ul_tbf)), TBF_UL_ASS_EV_SCHED_ASS_REJ, NULL);
+
+	return ul_tbf;
+}
+
 /* A new DL-TBF is allocated and assigned through PACCH using "tbf".
  * "tbf" may be either a UL-TBF or a DL-TBF.
  * Note: This should be called only when MS is reachable, see ms_is_reachable_for_dl_ass().
diff --git a/src/gprs_ms.h b/src/gprs_ms.h
index 716ad74..92292e3 100644
--- a/src/gprs_ms.h
+++ b/src/gprs_ms.h
@@ -151,6 +151,7 @@
 
 struct gprs_rlcmac_ul_tbf *ms_new_ul_tbf_assigned_pacch(struct GprsMs *ms, int8_t use_trx);
 struct gprs_rlcmac_ul_tbf *ms_new_ul_tbf_assigned_agch(struct GprsMs *ms);
+struct gprs_rlcmac_ul_tbf *ms_new_ul_tbf_rejected_pacch(struct GprsMs *ms, struct gprs_rlcmac_pdch *pdch);
 int ms_new_dl_tbf_assigned_on_pacch(struct GprsMs *ms, struct gprs_rlcmac_tbf *tbf);
 int ms_new_dl_tbf_assigned_on_pch(struct GprsMs *ms);
 int ms_append_llc_dl_data(struct GprsMs *ms, uint16_t pdu_delay_csec, const uint8_t *data, uint16_t len);
diff --git a/src/pdch.cpp b/src/pdch.cpp
index 75afc88..5a683ff 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -825,7 +825,7 @@
 
 	new_ul_tbf = ms_new_ul_tbf_assigned_pacch(ms, trx_no());
 	if (!new_ul_tbf) {
-		handle_tbf_reject(bts, ms, trx_no(), ts_no);
+		ms_new_ul_tbf_rejected_pacch(ms, this);
 		goto return_unref;
 	}
 
diff --git a/src/tbf_ul.cpp b/src/tbf_ul.cpp
index 8333a2f..b04c511 100644
--- a/src/tbf_ul.cpp
+++ b/src/tbf_ul.cpp
@@ -151,11 +151,11 @@
  * packet resource Request failed. This is similar as tbf_alloc_ul() but without
  * calling tbf->setup() (in charge of TFI/USF allocation), and reusing resources
  * from Packet Resource Request we received. See TS 44.060 sec 7.1.3.2.1  */
-struct gprs_rlcmac_ul_tbf *handle_tbf_reject(struct gprs_rlcmac_bts *bts,
-			GprsMs *ms, uint8_t trx_no, uint8_t ts)
+struct gprs_rlcmac_ul_tbf *ul_tbf_alloc_rejected(struct gprs_rlcmac_bts *bts, struct GprsMs *ms,
+						 struct gprs_rlcmac_pdch *pdch)
 {
 	struct gprs_rlcmac_ul_tbf *ul_tbf = NULL;
-	struct gprs_rlcmac_trx *trx = &bts->trx[trx_no];
+	struct gprs_rlcmac_trx *trx = pdch->trx;
 	OSMO_ASSERT(ms);
 
 	ul_tbf = talloc(tall_pcu_ctx, struct gprs_rlcmac_ul_tbf);
@@ -166,7 +166,7 @@
 
 	ul_tbf->trx = trx;
 	/* The only one TS is the common, control TS */
-	ms_set_first_common_ts(ms, ts);
+	ms_set_first_common_ts(ms, pdch->ts_no);
 	tbf_assign_control_ts(ul_tbf);
 	ul_tbf->m_ctrs = rate_ctr_group_alloc(ul_tbf, &tbf_ctrg_desc, next_tbf_ctr_group_id++);
 	ul_tbf->m_ul_egprs_ctrs = rate_ctr_group_alloc(ul_tbf,
@@ -176,17 +176,15 @@
 						      &tbf_ul_gprs_ctrg_desc,
 						      ul_tbf->m_ctrs->idx);
 	if (!ul_tbf->m_ctrs || !ul_tbf->m_ul_egprs_ctrs || !ul_tbf->m_ul_gprs_ctrs) {
-		LOGPTBF(ul_tbf, LOGL_ERROR, "Cound not allocate TBF UL rate counters\n");
+		LOGPTBF(ul_tbf, LOGL_ERROR, "Could not allocate TBF UL rate counters\n");
 		talloc_free(ul_tbf);
 		return NULL;
 	}
 	tbf_update_state_fsm_name(ul_tbf);
 
 	ms_attach_tbf(ms, ul_tbf);
-	llist_add(tbf_trx_list((struct gprs_rlcmac_tbf *)ul_tbf), &trx->ul_tbfs);
+	llist_add(tbf_trx_list(ul_tbf), &trx->ul_tbfs);
 	bts_do_rate_ctr_inc(ul_tbf->bts, CTR_TBF_UL_ALLOCATED);
-	osmo_fsm_inst_dispatch(ul_tbf->state_fi, TBF_EV_ASSIGN_ADD_PACCH, NULL);
-	osmo_fsm_inst_dispatch(ul_tbf->ul_ass_fsm.fi, TBF_UL_ASS_EV_SCHED_ASS_REJ, NULL);
 
 	return ul_tbf;
 }
diff --git a/src/tbf_ul.h b/src/tbf_ul.h
index c5c55f7..aa54c8f 100644
--- a/src/tbf_ul.h
+++ b/src/tbf_ul.h
@@ -123,8 +123,6 @@
 	return m_window.ws();
 }
 
-struct gprs_rlcmac_ul_tbf *handle_tbf_reject(struct gprs_rlcmac_bts *bts,
-	GprsMs *ms, uint8_t trx_no, uint8_t ts_no);
 
 #else /* ifdef __cplusplus */
 struct gprs_rlcmac_ul_tbf;
@@ -135,6 +133,8 @@
 extern "C" {
 #endif
 struct gprs_rlcmac_ul_tbf *ul_tbf_alloc(struct gprs_rlcmac_bts *bts, struct GprsMs *ms, int8_t use_trx, bool single_slot);
+struct gprs_rlcmac_ul_tbf *ul_tbf_alloc_rejected(struct gprs_rlcmac_bts *bts, struct GprsMs *ms,
+						 struct gprs_rlcmac_pdch *pdch);
 void update_tbf_ta(struct gprs_rlcmac_ul_tbf *tbf, int8_t ta_delta);
 void set_tbf_ta(struct gprs_rlcmac_ul_tbf *tbf, uint8_t ta);
 struct gprs_rlcmac_ul_tbf *tbf_as_ul_tbf(struct gprs_rlcmac_tbf *tbf);
diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index 314d2d9..80dfc2f 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -3240,7 +3240,7 @@
 
 	ms = bts_alloc_ms(bts, 0, 0);
 	ms_set_tlli(ms, tlli);
-	ul_tbf = handle_tbf_reject(bts, ms, trx_no, ts_no);
+	ul_tbf = ms_new_ul_tbf_rejected_pacch(ms, &bts->trx[trx_no].pdch[ts_no]);
 
 	OSMO_ASSERT(ul_tbf != 0);
 
