diff --git a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
index 188eab9c953d6fbe013a93e72ff876ac2592bf73..595d16587cca00f5e489aa82ec6f182c1b3e5c3f 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
@@ -520,25 +520,27 @@ schedule_ue_spec(
         //  mac_xface->macphy_exit("[MAC][eNB] Cannot find eNB_UE_stats\n");
         continue_flag=1;
       }
-      
-      switch(mac_xface->get_transmission_mode(module_idP,CC_id,rnti)){
-      case 1:
-      case 2:
-      case 7:
-	aggregation = get_aggregation(get_bw_index(module_idP,CC_id), 
+
+      if (continue_flag != 1){
+        switch(mac_xface->get_transmission_mode(module_idP,CC_id,rnti)){
+        case 1:
+        case 2:
+        case 7:
+	  aggregation = get_aggregation(get_bw_index(module_idP,CC_id), 
 				      eNB_UE_stats->DL_cqi[0],
 				      format1);
-	break;
-      case 3:
-	aggregation = get_aggregation(get_bw_index(module_idP,CC_id), 
+	  break;
+        case 3:
+	  aggregation = get_aggregation(get_bw_index(module_idP,CC_id), 
 				      eNB_UE_stats->DL_cqi[0],
 				      format2A);
-	break;
-      default:
-	LOG_W(MAC,"Unsupported transmission mode %d\n", mac_xface->get_transmission_mode(module_idP,CC_id,rnti));
-	aggregation = 2;
-      }
-      
+	  break;
+        default:
+	  LOG_W(MAC,"Unsupported transmission mode %d\n", mac_xface->get_transmission_mode(module_idP,CC_id,rnti));
+	  aggregation = 2;
+        }
+      } /* if (continue_flag != 1 */
+
       if ((ue_sched_ctl->pre_nb_available_rbs[CC_id] == 0) ||  // no RBs allocated 
 	  CCE_allocation_infeasible(module_idP,CC_id,0,subframeP,aggregation,rnti)
 	  ) {
diff --git a/openair2/LAYER2/MAC/pre_processor.c b/openair2/LAYER2/MAC/pre_processor.c
index 74e0a43d7dfedc11bf418081ff212bc80be73c02..1be9a2ba3a112b128927a2d4addfcb3d3c314461 100644
--- a/openair2/LAYER2/MAC/pre_processor.c
+++ b/openair2/LAYER2/MAC/pre_processor.c
@@ -66,14 +66,29 @@
 */
 
 /* this function checks that get_eNB_UE_stats returns
- * a non-NULL pointer for all CCs for a given UE
+ * a non-NULL pointer for all the active CCs of an UE
  */
 int phy_stats_exist(module_id_t Mod_id, int rnti)
 {
   int CC_id;
-  for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++)
+  int i;
+  int UE_id          = find_UE_id(Mod_id, rnti);
+  UE_list_t *UE_list = &eNB_mac_inst[Mod_id].UE_list;
+  if (UE_id == -1) {
+    LOG_W(MAC, "[eNB %d] UE %x not found, should be there (in phy_stats_exist)\n",
+	  Mod_id, rnti);
+    return 0;
+  }
+  if (UE_list->numactiveCCs[UE_id] == 0) {
+    LOG_W(MAC, "[eNB %d] UE %x has no active CC (in phy_stats_exist)\n",
+	  Mod_id, rnti);
+    return 0;
+  }
+  for (i = 0; i < UE_list->numactiveCCs[UE_id]; i++) {
+    CC_id = UE_list->ordered_CCids[i][UE_id];
     if (mac_xface->get_eNB_UE_stats(Mod_id, CC_id, rnti) == NULL)
       return 0;
+  }
   return 1;
 }