diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c
index 97a9709df5842102d8e2834d78893a0ffb49db2b..b800fb5402d9ad65d7c16837c4220a497749517f 100644
--- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c
+++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c
@@ -6492,7 +6492,7 @@ uint8_t pdcch_alloc2ul_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t n)
   else
     ul_subframe = ((n+4)%10);
 
-  if (subframe_select(frame_parms,ul_subframe) != SF_UL) return(255);
+  if ( (subframe_select(frame_parms,ul_subframe) != SF_UL) && (frame_parms->frame_type == TDD)) return(255);
 
   LOG_D(PHY, "subframe %d: PUSCH subframe = %d\n", n, ul_subframe);
   return ul_subframe;
diff --git a/openair2/LAYER2/MAC/pre_processor.c b/openair2/LAYER2/MAC/pre_processor.c
index 622d961816df070f884346d2db98d480363fa771..a4e4808060d19574fdcdd211da9a8a722fd696ba 100644
--- a/openair2/LAYER2/MAC/pre_processor.c
+++ b/openair2/LAYER2/MAC/pre_processor.c
@@ -2075,7 +2075,7 @@ void ulsch_scheduler_pre_ue_select(
 
       cc = &eNB->common_channels[CC_id];
       //harq_pid
-      harq_pid = subframe2harqpid(cc,frameP,subframeP);
+      harq_pid = subframe2harqpid(cc,(frameP+(subframeP>=6 ? 1 : 0)),((subframeP+4)%10));
       //round
       round = UE_list->UE_sched_ctrl[UE_id].round_UL[CC_id][harq_pid];