diff --git a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
index 186ade03d3e106bffe8d98c587fd22ee51bc4180..e7831ffe930ffcac02c31084de0ce128ca43f771 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
@@ -3839,10 +3839,15 @@ extract_harq(module_id_t mod_idP, int CC_idP, int UE_id,
 	    int M = ul_ACK_subframe2_M(fp,subframeP);
 	    for(m=0;m<M;m++){
 	     subframe_tx = ul_ACK_subframe2_dl_subframe(fp,subframeP,m);
-	     if(frameP==1023&&subframeP>5)
-	         frame_tx= -1;
-	     else
-	         frame_tx = subframeP < 5 ? frameP-1:frameP; // not formal
+	     switch (cc->tdd_Config->subframeAssignment){
+	     case 1:
+	        if(frameP==0&&subframeP<4)
+	          frame_tx= 0;
+	        else
+	          frame_tx = subframeP < 4 ? frameP-1:frameP; // not formal
+	          break;
+	         // TODO : Other TDD Config
+	     }
 	     harq_pid = frame_subframe2_dl_harq_pid(cc->tdd_Config,frame_tx,subframe_tx);
 	     if(num_ack_nak==1){
 	         if(harq_indication_tdd->harq_data[0].bundling.value_0==1){ //ack