diff --git a/openair1/PHY/INIT/nr_init_ue.c b/openair1/PHY/INIT/nr_init_ue.c
index 3132fb99605c96cd16960c64658ef36f930ce756..5e13cb7a9ef643c0d4dd95d87c9c2a1b44135b93 100644
--- a/openair1/PHY/INIT/nr_init_ue.c
+++ b/openair1/PHY/INIT/nr_init_ue.c
@@ -291,6 +291,9 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
     }
   }
 
+  ue->scramblingID_pdcch = fp->Nid_cell;
+  nr_gold_pdcch(ue,fp->Nid_cell);
+
   //PDSCH DMRS init (eNB offset = 0)
   ue->nr_gold_pdsch[0] = (uint32_t ****)malloc16(fp->slots_per_frame*sizeof(uint32_t ***));
   uint32_t ****pdsch_dmrs = ue->nr_gold_pdsch[0];
diff --git a/openair1/PHY/NR_REFSIG/nr_gold_ue.c b/openair1/PHY/NR_REFSIG/nr_gold_ue.c
index eefa6270ab58d553a461b418c9758386ab6f6621..edb53a2272a56f0b0795da9f66a4d202a16fc47b 100644
--- a/openair1/PHY/NR_REFSIG/nr_gold_ue.c
+++ b/openair1/PHY/NR_REFSIG/nr_gold_ue.c
@@ -52,22 +52,15 @@ void nr_gold_pbch(PHY_VARS_NR_UE* ue)
 }
 
 void nr_gold_pdcch(PHY_VARS_NR_UE* ue,
-                   unsigned short n_idDMRS,
-                   unsigned short length_dmrs)
+                   unsigned short nid)
 {
   unsigned char ns,l;
   unsigned int n,x1,x2,x2tmp0;
-  unsigned int nid;
   uint8_t reset;
 
-  if (n_idDMRS)
-    nid = n_idDMRS;
-  else
-    nid = ue->frame_parms.Nid_cell;
-
   for (ns=0; ns<ue->frame_parms.slots_per_frame; ns++) {
 
-    for (l=0; l<length_dmrs; l++) {
+    for (l=0; l<ue->frame_parms.symbols_per_slot; l++) {
 
       reset = 1;
       x2tmp0 = ((ue->frame_parms.symbols_per_slot*ns+l+1)*((nid<<1)+1))<<17;
diff --git a/openair1/PHY/NR_REFSIG/refsig_defs_ue.h b/openair1/PHY/NR_REFSIG/refsig_defs_ue.h
index 83b43c54a0820bb087caa088a58172cfd8433685..1719457db8cebe31da1d2eab7e7bb32fb40b10e7 100644
--- a/openair1/PHY/NR_REFSIG/refsig_defs_ue.h
+++ b/openair1/PHY/NR_REFSIG/refsig_defs_ue.h
@@ -57,8 +57,7 @@ int nr_pdsch_dmrs_rx(PHY_VARS_NR_UE *ue,
 void nr_gold_pbch(PHY_VARS_NR_UE* ue);
 
 void nr_gold_pdcch(PHY_VARS_NR_UE* ue,
-                   unsigned short n_idDMRS,
-                   unsigned short length_dmrs);
+                   unsigned short n_idDMRS);
 
 void nr_gold_pdsch(PHY_VARS_NR_UE* ue,
                    unsigned char ns,
diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c b/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
index 6cb0a612e9d6dd229f541aa251c085d1a8181d72..8407303c5ed83055c29abb096810c20d250ea6fc 100644
--- a/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+++ b/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
@@ -512,6 +512,13 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
   fr = filt16a_r1;
 
 
+  // checking if re-initialization of scrambling IDs is needed (should be done here but scrambling ID for PDCCH is not taken from RRC)
+/*  if (( != ue->scramblingID_pdcch){
+    ue->scramblingID_pdcch=;
+    nr_gold_pdsch(ue,ue->scramblingID_pdcch);
+  }*/
+
+
   // generate pilot
   int pilot[nb_rb_coreset * 3] __attribute__((aligned(16))); 
   nr_pdcch_dmrs_rx(ue,eNB_offset,Ns,ue->nr_gold_pdcch[eNB_offset][Ns][symbol], &pilot[0],2000,nb_rb_coreset);
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
index f2a1a808d5574c9d4adea5bb4aa57702d87569fa..a176dab6c366aa994f1370c43e2b716fb27a6263 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
@@ -316,7 +316,6 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, int n_frames, i
         ue->init_sync_frame = is;
       }   
 
-      nr_gold_pdcch(ue,0, 2);
     /*
     int nb_prefix_samples0 = fp->nb_prefix_samples0;
     fp->nb_prefix_samples0 = fp->nb_prefix_samples;
diff --git a/openair1/PHY/defs_nr_UE.h b/openair1/PHY/defs_nr_UE.h
index 390574a66b049c19648fc8ca6cf6573265467ba1..f27390cf664bd5ce3d907502092c63001ee371e0 100644
--- a/openair1/PHY/defs_nr_UE.h
+++ b/openair1/PHY/defs_nr_UE.h
@@ -842,9 +842,15 @@ typedef struct {
   /// PDSCH DMRS
   uint32_t ****nr_gold_pdsch[NUMBER_OF_CONNECTED_eNB_MAX];
 
+  // Scrambling IDs used in PDSCH DMRS
+  uint16_t scramblingID[2];
+
   /// PDCCH DMRS
   uint32_t ***nr_gold_pdcch[NUMBER_OF_CONNECTED_eNB_MAX];
 
+  // Scrambling IDs used in PDCCH DMRS
+  uint16_t scramblingID_pdcch;
+
   /// PUSCH DMRS sequence
   uint32_t ****nr_gold_pusch_dmrs;
 
diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
index 835c839710db476e44417dd181c3847a9e8246e7..70edda043cb002123aea9b5b539df5b81445cf39 100644
--- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
@@ -1715,7 +1715,6 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
   }
 
 #ifdef NR_PDCCH_SCHED
-  nr_gold_pdcch(ue, 0, 2);
 
   LOG_D(PHY," ------ --> PDCCH ChannelComp/LLR Frame.slot %d.%d ------  \n", frame_rx%1024, nr_slot_rx);
   for (uint16_t l=0; l<nb_symb_pdcch; l++) {