diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c
index 386dd8b52c0355949378905d9273c813c8a7bffd..e1ee5fa8471c3d13e35a0cd719f3a01ad096e4f5 100644
--- a/openair1/SCHED/phy_procedures_lte_ue.c
+++ b/openair1/SCHED/phy_procedures_lte_ue.c
@@ -641,9 +641,9 @@ void ue_compute_srs_occasion(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id
               }
 
               uint8_t pucch_ack_payload[2];
-              if (get_ack(&ue->frame_parms,
+              if ((ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack) && (get_ack(&ue->frame_parms,
                       ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack,
-                      subframe_tx,pucch_ack_payload,0) > 0)
+                      subframe_tx,pucch_ack_payload,0) > 0))
               {
                   is_sr_an_subframe = 1;
               }
@@ -2261,12 +2261,14 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
   }
     
   // reset DL ACK/NACK status
-  reset_ack(&ue->frame_parms,
-             ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack,
-             subframe_tx,
-             ue->ulsch[eNB_id]->o_ACK,0);
-
-  reset_ack(&ue->frame_parms,
+  if (ue->dlsch[proc->subframe_rx&0x1][eNB_id][0] != NULL)
+    reset_ack(&ue->frame_parms,
+               ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack,
+               subframe_tx,
+               ue->ulsch[eNB_id]->o_ACK,0);
+
+  if (ue->dlsch_SI[eNB_id] != NULL)
+    reset_ack(&ue->frame_parms,
              ue->dlsch_SI[eNB_id]->harq_ack,
              subframe_tx,
              ue->ulsch[eNB_id]->o_ACK,0);