diff --git a/openair2/LAYER2/MAC/eNB_agent_scheduler_dataplane.c b/openair2/LAYER2/MAC/eNB_agent_scheduler_dataplane.c
index a1bd039dff15dd5fbb7bc7ac023ffc80d40f05ef..6f840140705a1c93446960612cd3733f3e3e088e 100644
--- a/openair2/LAYER2/MAC/eNB_agent_scheduler_dataplane.c
+++ b/openair2/LAYER2/MAC/eNB_agent_scheduler_dataplane.c
@@ -163,6 +163,12 @@ void apply_ue_spec_scheduling_decisions(mid_t mod_id,
 	//Check if there is TA command and set the length appropriately
 	ta_len = (dl_data->ce_bitmap[0] & PROTOCOL__PRP_CE_TYPE__PRPCET_TA) ? 2 : 0; 
       }
+
+      if (ta_len > 0) {
+	// Reset the measurement
+	ue_sched_ctl->ta_timer = 20;
+	eNB_UE_stats->timing_advance_update = 0;
+      }
       
       n_lc = dl_data->n_rlc_pdu;
       num_sdus = 0;
@@ -333,6 +339,7 @@ void fill_oai_dci(mid_t mod_id, uint32_t CC_id, uint32_t rnti,
   int           size_bits, size_bytes;
   eNB_MAC_INST         *eNB      = &eNB_mac_inst[mod_id];
   UE_list_t            *UE_list  = &eNB->UE_list;
+  LTE_eNB_UE_stats *eNB_UE_stats = NULL;
 
   int UE_id = find_ue(rnti, PHY_vars_eNB_g[mod_id][CC_id]);
 
@@ -346,6 +353,15 @@ void fill_oai_dci(mid_t mod_id, uint32_t CC_id, uint32_t rnti,
   DCI_pdu = &eNB->common_channels[CC_id].DCI_pdu;
   
   frame_parms[CC_id] = mac_xface->get_lte_frame_parms(mod_id, CC_id);
+
+  if (dl_dci->has_tpc == 1) {
+    // Check if tpc has been set and reset measurement */
+    if ((dl_dci->tpc == 0) || (dl_dci->tpc == 2)) {
+      eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id, CC_id, rnti);
+      eNB_UE_stats->Po_PUCCH_update = 0;
+    }
+  }
+  
   
   switch (frame_parms[CC_id]->N_RB_DL) {
   case 6: