Index: branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_lim3_interp.F90
===================================================================
--- branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_lim3_interp.F90	(revision 9454)
+++ branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_lim3_interp.F90	(revision 9482)
@@ -53,12 +53,12 @@
       !!-----------------------------------------------------------------------
       !
-      IF( Agrif_Root() .OR. nn_ice==0 )  RETURN   ! do not interpolate if inside Parent domain or if child domain does not have ice
+      IF( Agrif_Root() .OR. nn_ice==0 )  RETURN   ! do not interpolate if inside Parent Grid or if child domain does not have ice
       !
       SELECT CASE( cd_type )
       CASE('U','V')
-         IF( PRESENT( kiter ) ) THEN  ! interpolation at the child sub-time step (only for ice rheology)
+         IF( PRESENT( kiter ) ) THEN  ! interpolation at the child ice sub-time step (only for ice rheology)
             zbeta = ( REAL(lim_nbstep) - REAL(kitermax - kiter) / REAL(kitermax) ) /  &
                &    ( Agrif_Rhot() * REAL(Agrif_Parent(nn_fsbc)) / REAL(nn_fsbc) )
-         ELSE                         ! interpolation at the child time step
+         ELSE                         ! interpolation at the child ice time step
             zbeta = REAL(lim_nbstep) / ( Agrif_Rhot() * REAL(Agrif_Parent(nn_fsbc)) / REAL(nn_fsbc) )
          ENDIF
@@ -204,10 +204,10 @@
                !
                DO jk = 1, nlay_s
-                  e_s(i1:i2,j1:j2,jk,jl) = ptab(:,:,jm) * tmask(i1:i2,j1:j2,1)
+                  e_s(i1:i2,j1:j2,jk,jl) = ptab(i1:i2,j1:j2,jm) * tmask(i1:i2,j1:j2,1)
                   jm = jm + 1
                END DO
                !
                DO jk = 1, nlay_i
-                  e_i(i1:i2,j1:j2,jk,jl) = ptab(:,:,jm) * tmask(i1:i2,j1:j2,1)
+                  e_i(i1:i2,j1:j2,jk,jl) = ptab(i1:i2,j1:j2,jm) * tmask(i1:i2,j1:j2,1)
                   jm = jm + 1
                END DO
@@ -216,11 +216,9 @@
             !
 !!==> clem: this interpolation does not work because it creates negative values, due
-!           to negative coefficients when mixing points (for ex. z7)
+!!          to negative coefficients when mixing points (for ex. z7)
 !!
 !         ELSE                          ! ==> complex interpolation (only one ghost cell available)
 !            !! Use a more complex interpolation since we mix solutions over a couple of grid points
 !            !! it is advised to use it for fields modified by high order schemes (e.g. advection UM5...)
-!            !! clem: for some reason (I don't know why), the following lines do not work 
-!            !        I think there is an issue with Agrif_SpecialValue here (not taken into account properly)
 !            ! record ztab
 !            jm = 1
@@ -358,16 +356,4 @@
 !         ENDIF  ! nbghostcells=1
          
-         ! integrated values
-         vt_i (i1:i2,j1:j2) = SUM(      v_i(i1:i2,j1:j2,:),            dim=3 )
-         vt_s (i1:i2,j1:j2) = SUM(      v_s(i1:i2,j1:j2,:),            dim=3 )
-         at_i (i1:i2,j1:j2) = SUM(      a_i(i1:i2,j1:j2,:),            dim=3 )
-         et_s(i1:i2,j1:j2)  = SUM( SUM( e_s(i1:i2,j1:j2,:,:), dim=4 ), dim=3 )
-         et_i(i1:i2,j1:j2)  = SUM( SUM( e_i(i1:i2,j1:j2,:,:), dim=4 ), dim=3 )
-
-         at_ip(i1:i2,j1:j2) = SUM( a_ip(i1:i2,j1:j2,:), dim=3 ) ! melt ponds
-         vt_ip(i1:i2,j1:j2) = SUM( v_ip(i1:i2,j1:j2,:), dim=3 )
-         !
-         ato_i(i1:i2,j1:j2) = 1._wp - at_i(i1:i2,j1:j2)         ! open water fraction  
-
          DO jl = 1, jpl
             WHERE( tmask(i1:i2,j1:j2,1) == 0._wp )   t_su(i1:i2,j1:j2,jl) = rt0   ! to avoid a division by 0 in sbcblk.F90
Index: branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_lim3_update.F90
===================================================================
--- branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_lim3_update.F90	(revision 9454)
+++ branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_lim3_update.F90	(revision 9482)
@@ -1,3 +1,4 @@
 #define TWO_WAY
+!!#undef TWO_WAY
 
 MODULE agrif_lim3_update
@@ -32,5 +33,5 @@
    PRIVATE
 
-   PUBLIC   agrif_update_lim3   ! called by agrif_user.F90
+   PUBLIC   agrif_update_lim3   ! called by agrif_user.F90 and icestp.F90
 
    !!----------------------------------------------------------------------
@@ -51,9 +52,7 @@
       !!----------------------------------------------------------------------
       !
-      !! clem: I think the update should take place each time the ocean sees the surface forcings
-      !!       (but maybe I am wrong and we should update every rhot time steps) 
-      IF( ( MOD( (kt-nit000)/nn_fsbc + 1, Agrif_irhot() * Agrif_Parent(nn_fsbc) / nn_fsbc ) /=0 ) .AND. (kt /= 0) ) RETURN ! do not update if nb of child time steps differ from time refinement
-                                                                                                                           ! i.e. update only at the parent time step
-      IF( nn_ice == 0 ) RETURN   ! do not update if child domain does not have ice
+      IF( Agrif_Root() .OR. nn_ice == 0 ) RETURN   ! do not update if inside Parent Grid or if child domain does not have ice
+      !
+      IF( ( MOD( (kt-nit000)/nn_fsbc + 1, Agrif_irhot() * Agrif_Parent(nn_fsbc)/nn_fsbc ) /=0 ) .AND. (kt /= 0) ) RETURN   ! update only at the parent ice time step
       !
       Agrif_SpecialValueFineGrid    = -9999.
@@ -148,16 +147,4 @@
          END DO
          !
-         ! integrated values
-         vt_i(i1:i2,j1:j2) = SUM(      v_i(i1:i2,j1:j2,:)           , dim=3 )
-         vt_s(i1:i2,j1:j2) = SUM(      v_s(i1:i2,j1:j2,:)           , dim=3 )
-         at_i(i1:i2,j1:j2) = SUM(      a_i(i1:i2,j1:j2,:)           , dim=3 )
-         et_s(i1:i2,j1:j2) = SUM( SUM( e_s(i1:i2,j1:j2,:,:), dim=4 ), dim=3 )
-         et_i(i1:i2,j1:j2) = SUM( SUM( e_i(i1:i2,j1:j2,:,:), dim=4 ), dim=3 )
-
-         at_ip(i1:i2,j1:j2) = SUM( a_ip(i1:i2,j1:j2,:), dim=3 ) ! melt ponds
-         vt_ip(i1:i2,j1:j2) = SUM( v_ip(i1:i2,j1:j2,:), dim=3 )
-         !
-         ato_i(i1:i2,j1:j2) = 1._wp - at_i(i1:i2,j1:j2)         ! open water fraction  
-
          DO jl = 1, jpl
             WHERE( tmask(i1:i2,j1:j2,1) == 0._wp )   t_su(i1:i2,j1:j2,jl) = rt0   ! to avoid a division by 0 in sbcblk.F90
Index: branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_user.F90
===================================================================
--- branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_user.F90	(revision 9454)
+++ branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_user.F90	(revision 9482)
@@ -307,4 +307,7 @@
    USE agrif_top_update
 #endif
+#if defined key_lim3
+   USE agrif_lim3_update
+#endif
    !
    IMPLICIT NONE
@@ -323,4 +326,8 @@
 !!   CALL Agrif_Update_tke(0)
 
+#if defined key_lim3
+   CALL agrif_update_lim3(0)
+#endif
+   
    CALL Agrif_ChildGrid_To_ParentGrid()
    CALL Agrif_Update_ini()
@@ -497,5 +504,4 @@
    USE agrif_ice
    USE in_out_manager
-   USE agrif_lim3_update
    USE agrif_lim3_interp
    USE lib_mpp
@@ -510,9 +516,9 @@
    ! Controls
 
-   ! clem: For some reason, nn_fsbc(child)/=1 does not work properly (signal is largely degraded by the agrif zoom)
+   ! clem: For some reason, nn_fsbc(child)/=1 does not work properly (signal can be largely degraded by the agrif zoom)
    !          the run must satisfy CFL=Uice/(dx/dt) < 0.6/nn_fsbc(child)
    !          therefore, if nn_fsbc(child)>1 one must reduce the time-step in proportion to nn_fsbc(child), which is not acceptable
-   !       If a solution is found, the following stop could be removed
-   IF( nn_fsbc > 1 )  CALL ctl_stop('nn_fsbc(child) must be set to 1 otherwise agrif and lim3 do not work properly')
+   !       If a solution is found, the following stop could be removed because the rest of the code take nn_fsbc(child) into account
+   IF( nn_fsbc > 1 )  CALL ctl_stop('nn_fsbc(child) must be set to 1 otherwise agrif and sea-ice may not work properly')
 
    ! stop if rhot * nn_fsbc(parent) /= N * nn_fsbc(child) with N being integer
@@ -528,8 +534,4 @@
    lim_nbstep = 0
    
-   ! Update in case 2 ways
-   !----------------------
-   CALL agrif_update_lim3(0)
-
    !
 END SUBROUTINE Agrif_InitValues_cont_lim3
