diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
index 35850a1a2d71660abbe23b16a8b8eda32b0d3bab..a44eb36c1fec66b185f57dfcd4e3308719f50afe 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
@@ -894,11 +894,13 @@ void nr_get_Msg3alloc(module_id_t module_id,
   uint8_t k2 = 0;
   if (frame_type == TDD) {
     int msg3_slot = get_first_ul_slot(tdd->nrofDownlinkSlots, tdd->nrofDownlinkSymbols, tdd->nrofUplinkSymbols);
-    if (tdd->nrofUplinkSymbols < 3)
-      msg3_slot++; // we can't trasmit msg3 in mixed slot if there are less than 3 symbols
-    else {
-      Msg3maxsymb = tdd->nrofUplinkSymbols;
-      Msg3start = 14 - tdd->nrofUplinkSymbols;
+    if (tdd->nrofUplinkSymbols != 0) {
+      if (tdd->nrofUplinkSymbols < 3)
+        msg3_slot++; // we can't trasmit msg3 in mixed slot if there are less than 3 symbols
+      else {
+        Msg3maxsymb = tdd->nrofUplinkSymbols;
+        Msg3start = 14 - tdd->nrofUplinkSymbols;
+      }
     }
     const int nb_periods_per_frame = get_nb_periods_per_frame(tdd->dl_UL_TransmissionPeriodicity);
     const int nb_slots_per_period = ((1<<mu)*10)/nb_periods_per_frame;