diff --git a/executables/nr-softmodem.h b/executables/nr-softmodem.h
index 8334c9913481155882cd36318dd85b6d666f34d7..d7b121ecd27f16326d38047019c6eb22e46d8482 100644
--- a/executables/nr-softmodem.h
+++ b/executables/nr-softmodem.h
@@ -26,7 +26,7 @@
     {"wait-for-sync",         NULL,                   PARAMFLAG_BOOL,   iptr:&wait_for_sync,                defintval:0,                   TYPE_INT,    0},        \
     {"single-thread-disable", CONFIG_HLP_NOSNGLT,     PARAMFLAG_BOOL,   iptr:&single_thread_flag,           defintval:1,                   TYPE_INT,    0},        \
     {"A" ,                    CONFIG_HLP_TADV,        0,                uptr:&timing_advance,               defintval:0,                   TYPE_UINT,   0},        \
-    {"C" ,                    CONFIG_HLP_DLF,         0,                uptr:&(downlink_frequency[0][0]),   defuintval:DEFAULT_DLF,        TYPE_UINT,   0},        \
+    {"C" ,                    CONFIG_HLP_DLF,         0,                u64ptr:&(downlink_frequency[0][0]), defuintval:DEFAULT_DLF,        TYPE_UINT64, 0},        \
     {"a" ,                    CONFIG_HLP_CHOFF,       0,                iptr:&chain_offset,                 defintval:0,                   TYPE_INT,    0},        \
     {"d" ,                    CONFIG_HLP_SOFTS,       PARAMFLAG_BOOL,   uptr:(uint32_t *)&do_forms,         defintval:0,                   TYPE_INT8,   0},        \
     {"E" ,                    CONFIG_HLP_TQFS,        PARAMFLAG_BOOL,   i8ptr:&threequarter_fs,             defintval:0,                   TYPE_INT8,   0},        \
diff --git a/openair1/PHY/defs_gNB.h b/openair1/PHY/defs_gNB.h
index 16eb4c13894af2476752f3bb836e5331d95b9ea9..52aade312ae0a6b439fb27ae35633912dd9a0bc5 100644
--- a/openair1/PHY/defs_gNB.h
+++ b/openair1/PHY/defs_gNB.h
@@ -627,8 +627,6 @@ typedef struct PHY_VARS_gNB_s {
   nfapi_nr_ul_dci_request_pdus_t  *ul_dci_pdu;
   nfapi_nr_dl_tti_ssb_pdu      ssb_pdu;
 
-  uint8_t skipped_slots; // for 120kHz SSB transmission
-
   int num_pdsch_rnti;
   NR_gNB_PBCH         pbch;
   nr_cce_t           cce_list[MAX_DCI_CORESET][NR_MAX_PDCCH_AGG_LEVEL];
diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c
index 99613055c3ad9b1611c7884277fec7c3d199ac34..67eadb358ad97962b3cfd5797bd7f922b34a8d61 100644
--- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c
+++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c
@@ -48,6 +48,8 @@
   #include "intertask_interface.h"
 #endif
 
+uint8_t SSB_Table[38]={0,2,4,6,8,10,12,14,254,254,16,18,20,22,24,26,28,30,254,254,32,34,36,38,40,42,44,46,254,254,48,50,52,54,56,58,60,62};
+
 extern uint8_t nfapi_mode;
 
 void nr_set_ssb_first_subcarrier(nfapi_nr_config_request_scf_t *cfg, NR_DL_FRAME_PARMS *fp) {
@@ -80,41 +82,37 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int slot) {
 
   LOG_D(PHY,"common_signal_procedures: frame %d, slot %d\n",frame,slot);
 
-  if (rel_slot==0)
-    gNB->skipped_slots = 0;
+  if(rel_slot<38 && rel_slot>=0)  { // there is no SSB beyond slot 37
 
-  if ((rel_slot==8) || (rel_slot==9) || (rel_slot==18) || (rel_slot==19) || (rel_slot==28) || (rel_slot==29))
-    gNB->skipped_slots = gNB->skipped_slots + 1;
-  else {
-    if(rel_slot<38 && rel_slot>=0)  { // there is no SSB beyond slot 37
-      for (int i=0; i<2; i++)  {  // max two SSB per frame
+    for (int i=0; i<2; i++)  {  // max two SSB per frame
       
-        ssb_index = i + ((rel_slot - gNB->skipped_slots)<<1); // computing the ssb_index
-        if ((fp->L_ssb >> ssb_index) & 0x01)  { // generating the ssb only if the bit of L_ssb at current ssb index is 1
-	
-          fp->ssb_index = ssb_index;
-	  int ssb_start_symbol_abs = nr_get_ssb_start_symbol(fp); // computing the starting symbol for current ssb
-	  ssb_start_symbol = ssb_start_symbol_abs % fp->symbols_per_slot;  // start symbol wrt slot
+      ssb_index = i + SSB_Table[rel_slot]; // computing the ssb_index
+
+      if ((ssb_index<64) && ((fp->L_ssb >> ssb_index) & 0x01))  { // generating the ssb only if the bit of L_ssb at current ssb index is 1
 
-	  nr_set_ssb_first_subcarrier(cfg, fp);  // setting the first subcarrier
+        fp->ssb_index = ssb_index;
+        int ssb_start_symbol_abs = nr_get_ssb_start_symbol(fp); // computing the starting symbol for current ssb
+	ssb_start_symbol = ssb_start_symbol_abs % fp->symbols_per_slot;  // start symbol wrt slot
+
+	nr_set_ssb_first_subcarrier(cfg, fp);  // setting the first subcarrier
 	
-	  LOG_D(PHY,"SS TX: frame %d, slot %d, start_symbol %d\n",frame,slot, ssb_start_symbol);
-	  nr_generate_pss(gNB->d_pss, &txdataF[0][txdataF_offset], AMP, ssb_start_symbol, cfg, fp);
-	  nr_generate_sss(gNB->d_sss, &txdataF[0][txdataF_offset], AMP, ssb_start_symbol, cfg, fp);
+	LOG_D(PHY,"SS TX: frame %d, slot %d, start_symbol %d\n",frame,slot, ssb_start_symbol);
+	nr_generate_pss(gNB->d_pss, &txdataF[0][txdataF_offset], AMP, ssb_start_symbol, cfg, fp);
+	nr_generate_sss(gNB->d_sss, &txdataF[0][txdataF_offset], AMP, ssb_start_symbol, cfg, fp);
 	
-          if (cfg->carrier_config.num_tx_ant.value <= 4)
-	    nr_generate_pbch_dmrs(gNB->nr_gold_pbch_dmrs[n_hf][ssb_index&7],&txdataF[0][txdataF_offset], AMP, ssb_start_symbol, cfg, fp);
-          else
-	    nr_generate_pbch_dmrs(gNB->nr_gold_pbch_dmrs[0][ssb_index&7],&txdataF[0][txdataF_offset], AMP, ssb_start_symbol, cfg, fp);
+        if (cfg->carrier_config.num_tx_ant.value <= 4)
+	  nr_generate_pbch_dmrs(gNB->nr_gold_pbch_dmrs[n_hf][ssb_index&7],&txdataF[0][txdataF_offset], AMP, ssb_start_symbol, cfg, fp);
+        else
+	  nr_generate_pbch_dmrs(gNB->nr_gold_pbch_dmrs[0][ssb_index&7],&txdataF[0][txdataF_offset], AMP, ssb_start_symbol, cfg, fp);
 	
-	  nr_generate_pbch(&gNB->pbch,
-	                   &gNB->ssb_pdu,
-			   gNB->nr_pbch_interleaver,
-			   &txdataF[0][txdataF_offset],
-			   AMP,
-			   ssb_start_symbol,
-			   n_hf, frame, cfg, fp);
-        }
+	nr_generate_pbch(&gNB->pbch,
+	                 &gNB->ssb_pdu,
+	                 gNB->nr_pbch_interleaver,
+			 &txdataF[0][txdataF_offset],
+			 AMP,
+			 ssb_start_symbol,
+			 n_hf, frame, cfg, fp);
+
       }
     }
   }