diff --git a/src/ICE/iceistate.F90 b/src/ICE/iceistate.F90
index c1fb86e0910e438bb70a83d8b08f51447904edfe..97c783148d78866bec1bf7f9aa9e240e91d1ed7a 100644
--- a/src/ICE/iceistate.F90
+++ b/src/ICE/iceistate.F90
@@ -436,11 +436,7 @@ CONTAINS
          ! Override ssh adjustment in nested domains by the root-domain ssh adjustment;
          ! store the adjustment value in a global module variable to make it retrievable in nested domains
          IF( .NOT.Agrif_Root() ) THEN
-            IF  (.NOT.ln_init_chfrpar ) THEN   ! child is not initialized from the parent
-               zsshadj = Agrif_Parent(rsshadj)
-            ELSE                               ! child is     initialized from the parent
-               zsshadj = 0._wp                 ! => 0 since ssh adjustement is already done
-            ENDIF
+            zsshadj = Agrif_Parent(rsshadj)
          ELSE
             rsshadj = zsshadj
          ENDIF
@@ -463,10 +459,10 @@ CONTAINS
 #else
          DO jk = 1, jpk
             DO_2D( nn_hls, nn_hls, nn_hls, nn_hls)
-               IF( snwice_mass(ji,jj) /= 0._wp ) THEN
+!               IF( snwice_mass(ji,jj) /= 0._wp ) THEN
                   e3t(ji,jj,jk,Kmm) = e3t_0(ji,jj,jk) * ( 1._wp + ssh(ji,jj,Kmm) * r1_ht_0(ji,jj) * tmask(ji,jj,jk) )
                   e3t(ji,jj,jk,Kbb) = e3t_0(ji,jj,jk) * ( 1._wp + ssh(ji,jj,Kbb) * r1_ht_0(ji,jj) * tmask(ji,jj,jk) )
-               ENDIF
+!               ENDIF
             END_2D
          END DO
          !
diff --git a/src/NST/agrif_oce_interp.F90 b/src/NST/agrif_oce_interp.F90
index 7d25ea55436f84ebe8c2b190d28aca05d0f0d259..326ecbbd0311ad5dbab077b332fbc929f6a7171f 100644
--- a/src/NST/agrif_oce_interp.F90
+++ b/src/NST/agrif_oce_interp.F90
@@ -34,7 +34,11 @@ MODULE agrif_oce_interp
    USE lib_mpp
    USE vremap
    USE lbclnk
- 
+#if defined key_si3
+   USE iceistate, ONLY: rsshadj, nn_iceini_file
+   USE sbc_oce  , ONLY: ln_ice_embd
+   USE sbc_ice  , ONLY: snwice_mass
+#endif 
    IMPLICIT NONE
    PRIVATE
 
@@ -1108,7 +1112,21 @@ CONTAINS
       !!----------------------------------------------------------------------  
       !
       IF( before) THEN
+#if defined key_si3
+         IF (l_ini_child.AND.(.NOT.(ln_rstart .OR. nn_iceini_file == 2))) THEN
+            IF( ln_ice_embd ) THEN  
+               ptab(i1:i2,j1:j2) = ssh(i1:i2,j1:j2,Kmm_a)  &
+                    &              + snwice_mass(i1:i2,j1:j2) * r1_rho0
+            ELSE
+               ptab(i1:i2,j1:j2) = ssh(i1:i2,j1:j2,Kmm_a)  &
+                    &              + rsshadj * tmask(i1:i2,j1:j2,1)
+            ENDIF
+         ELSE
+            ptab(i1:i2,j1:j2) = ssh(i1:i2,j1:j2,Kmm_a)
+         ENDIF
+#else
          ptab(i1:i2,j1:j2) = ssh(i1:i2,j1:j2,Kmm_a)
+#endif
       ELSE
          IF( l_ini_child ) THEN
             ssh(i1:i2,j1:j2,Krhs_a) = ptab(i1:i2,j1:j2) * tmask(i1:i2,j1:j2,1)
diff --git a/src/OCE/SBC/sbcdcy.F90 b/src/OCE/SBC/sbcdcy.F90
index 26c44de74c6a109bcb2c20449585985468ab6433..a6ccd03321f0f73ef86af9e943cbcfbf03513ab4 100644
--- a/src/OCE/SBC/sbcdcy.F90
+++ b/src/OCE/SBC/sbcdcy.F90
@@ -151,8 +151,8 @@ CONTAINS
          ENDIF
       END_2D
       !
-      IF( PRESENT(l_mask) .AND. l_mask ) THEN
-         zqsrout(:,:) = float(imask_night(:,:))
+      IF( PRESENT(l_mask) ) THEN
+         IF ( l_mask ) zqsrout(:,:) = float(imask_night(:,:))
       ENDIF
       !
    END FUNCTION sbc_dcy
diff --git a/src/OCE/TRA/zpshde.F90 b/src/OCE/TRA/zpshde.F90
index 2b786d65e30aee97c385ab35e5f84951a51eb130..0591067f9e804265264b6aae3adb49d98dbfa6eb 100644
--- a/src/OCE/TRA/zpshde.F90
+++ b/src/OCE/TRA/zpshde.F90
@@ -164,7 +164,7 @@ CONTAINS
          END_2D
       END DO
       !
-      IF (nn_hls==1) CALL lbc_lnk( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond.
+      IF (nn_hls==1) CALL lbc_lnk( 'zpshde', pgtu, 'U', -1.0_wp , pgtv, 'V', -1.0_wp )   ! Lateral boundary cond.
       !
       IF( PRESENT( prd ) ) THEN    !==  horizontal derivative of density anomalies (rd)  ==!    (optional part)
          pgru(:,:) = 0._wp
@@ -343,7 +343,7 @@ CONTAINS
          END_2D
       END DO
       !
-      IF (nn_hls==1) CALL lbc_lnk( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond.
+      IF (nn_hls==1) CALL lbc_lnk( 'zpshde', pgtu, 'U', -1.0_wp , pgtv, 'V', -1.0_wp )   ! Lateral boundary cond.
 
       ! horizontal derivative of density anomalies (rd)
       IF( PRESENT( prd ) ) THEN         ! depth of the partial step level
@@ -436,7 +436,7 @@ CONTAINS
          END_2D
          !
       END DO
-      IF (nn_hls==1) CALL lbc_lnk( 'zpshde', pgtui(:,:,:), 'U', -1.0_wp , pgtvi(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond.
+      IF (nn_hls==1) CALL lbc_lnk( 'zpshde', pgtui, 'U', -1.0_wp , pgtvi, 'V', -1.0_wp )   ! Lateral boundary cond.
 
       IF( PRESENT( prd ) ) THEN    !==  horizontal derivative of density anomalies (rd)  ==!    (optional part)
          !