Index: NEMO/trunk/src/OCE/ASM/asminc.F90
===================================================================
--- NEMO/trunk/src/OCE/ASM/asminc.F90	(revision 15053)
+++ NEMO/trunk/src/OCE/ASM/asminc.F90	(revision 15055)
@@ -822,10 +822,10 @@
       !
       IF( ln_linssh ) THEN
-         DO_2D_OVR( nn_hls-1, nn_hls, nn_hls-1, nn_hls )
+         DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls )
             phdivn(ji,jj,1) = phdivn(ji,jj,1) - ssh_iau(ji,jj) / e3t(ji,jj,1,Kmm) * tmask(ji,jj,1)
          END_2D
       ELSE
          ALLOCATE( ztim(A2D(nn_hls)) )
-         DO_2D_OVR( nn_hls-1, nn_hls, nn_hls-1, nn_hls )
+         DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls )
             ztim(ji,jj) = ssh_iau(ji,jj) / ( ht(ji,jj) + 1.0 - ssmask(ji,jj) )
             DO jk = 1, jpkm1
Index: NEMO/trunk/src/OCE/DYN/divhor.F90
===================================================================
--- NEMO/trunk/src/OCE/DYN/divhor.F90	(revision 15053)
+++ NEMO/trunk/src/OCE/DYN/divhor.F90	(revision 15055)
@@ -79,5 +79,5 @@
       ENDIF
       !
-      DO_3D_OVR( nn_hls-1, nn_hls, nn_hls-1, nn_hls, 1, jpkm1 )                                    !==  Horizontal divergence  ==!
+      DO_3D_OVR( 0, 0, 0, 0, 1, jpkm1 )                                          !==  Horizontal divergence  ==!
          ! round brackets added to fix the order of floating point operations
          ! needed to ensure halo 1 - halo 2 compatibility
@@ -90,6 +90,8 @@
             &             )  * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm)
       END_3D
+      CALL lbc_lnk( 'divhor', hdiv, 'T', 1.0_wp )   !   (no sign change)
+      !                                             ! needed for ww
       !
-      IF( ln_rnf )   CALL sbc_rnf_div( hdiv, Kmm )                     !==  runoffs    ==!   (update hdiv field)
+      IF( ln_rnf )   CALL sbc_rnf_div( hdiv, Kmm )                               !==  runoffs    ==!   (update hdiv field)
       !
 #if defined key_asminc 
@@ -99,6 +101,4 @@
       IF( ln_isf )                      CALL isf_hdiv( kt, Kmm, hdiv )           !==  ice shelf         ==!   (update hdiv field)
       !
-      IF (nn_hls==1) CALL lbc_lnk( 'divhor', hdiv, 'T', 1.0_wp )   !   (no sign change)
-      !
       IF( ln_timing )   CALL timing_stop('div_hor')
       !
Index: NEMO/trunk/src/OCE/DYN/sshwzv.F90
===================================================================
--- NEMO/trunk/src/OCE/DYN/sshwzv.F90	(revision 15053)
+++ NEMO/trunk/src/OCE/DYN/sshwzv.F90	(revision 15055)
@@ -182,12 +182,14 @@
             ! horizontal divergence of thickness diffusion transport ( velocity multiplied by e3t)
             ! - ML - note: computation already done in dom_vvl_sf_nxt. Could be optimized (not critical and clearer this way)
-            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )
+            DO_2D( 0, 0, 0, 0 )
                zhdiv(ji,jj,jk) = r1_e1e2t(ji,jj) * ( un_td(ji,jj,jk) - un_td(ji-1,jj,jk) + vn_td(ji,jj,jk) - vn_td(ji,jj-1,jk) )
             END_2D
          END DO
-         IF (nn_hls==1) CALL lbc_lnk('sshwzv', zhdiv, 'T', 1.0_wp)  ! - ML - Perhaps not necessary: not used for horizontal "connexions"
+         CALL lbc_lnk('sshwzv', zhdiv, 'T', 1.0_wp)  ! - ML - Perhaps not necessary: not used for horizontal "connexions"
          !                             ! Is it problematic to have a wrong vertical velocity in boundary cells?
          !                             ! Same question holds for hdiv. Perhaps just for security
-         DO_3DS( 1, 1, 1, 1, jpkm1, 1, -1 )         ! integrate from the bottom the hor. divergence
+         !                             ! clem: yes it is a problem because ww is used in many other places where we need the halos
+         !
+         DO_3DS( nn_hls, nn_hls, nn_hls, nn_hls, jpkm1, 1, -1 )         ! integrate from the bottom the hor. divergence
             ! computation of w
             pww(ji,jj,jk) = pww(ji,jj,jk+1) - (   e3t(ji,jj,jk,Kmm) * hdiv(ji,jj,jk)   &
@@ -201,5 +203,5 @@
       ELSEIF( ln_linssh )   THEN                      !==  linear free surface cases  ==!
          !                                            !=================================!
-         DO_3DS( 1, 1, 1, 1, jpkm1, 1, -1 )                 ! integrate from the bottom the hor. divergence
+         DO_3DS( nn_hls, nn_hls, nn_hls, nn_hls, jpkm1, 1, -1 )         ! integrate from the bottom the hor. divergence
             pww(ji,jj,jk) = pww(ji,jj,jk+1) - (  e3t(ji,jj,jk,Kmm) * hdiv(ji,jj,jk)  ) * tmask(ji,jj,jk)
          END_3D
@@ -207,5 +209,5 @@
       ELSE                                            !==  Quasi-Eulerian vertical coordinate  ==!   ('key_qco')
          !                                            !==========================================!
-         DO_3DS( 1, 1, 1, 1, jpkm1, 1, -1 )                 ! integrate from the bottom the hor. divergence
+         DO_3DS( nn_hls, nn_hls, nn_hls, nn_hls, jpkm1, 1, -1 )         ! integrate from the bottom the hor. divergence
             pww(ji,jj,jk) = pww(ji,jj,jk+1) - (  e3t(ji,jj,jk,Kmm) * hdiv(ji,jj,jk)    &
                &                                 + r1_Dt * (  e3t(ji,jj,jk,Kaa)        &
@@ -216,5 +218,7 @@
       IF( ln_bdy ) THEN
          DO jk = 1, jpkm1
-            pww(:,:,jk) = pww(:,:,jk) * bdytmask(:,:)
+            DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )
+               pww(ji,jj,jk) = pww(ji,jj,jk) * bdytmask(ji,jj)
+            END_2D
          END DO
       ENDIF
Index: NEMO/trunk/src/OCE/ISF/isfhdiv.F90
===================================================================
--- NEMO/trunk/src/OCE/ISF/isfhdiv.F90	(revision 15053)
+++ NEMO/trunk/src/OCE/ISF/isfhdiv.F90	(revision 15055)
@@ -97,10 +97,10 @@
       !
       ! compute integrated divergence correction
-      DO_2D( nn_hls-1, nn_hls, nn_hls-1, nn_hls )
+      DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )
          zhdiv(ji,jj) = 0.5_wp * ( pfwf(ji,jj) + pfwf_b(ji,jj) ) * r1_rho0 / phtbl(ji,jj)
       END_2D
       !
       ! update divergence at each level affected by ice shelf top boundary layer
-      DO_2D_OVR( nn_hls-1, nn_hls, nn_hls-1, nn_hls )
+      DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls )
          ikt = ktop(ji,jj)
          ikb = kbot(ji,jj)
@@ -136,5 +136,5 @@
       !!----------------------------------------------------------------------
       !
-      DO_3D_OVR( nn_hls-1, nn_hls, nn_hls-1, nn_hls, 1, jpk )
+      DO_3D_OVR( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk )
          phdiv(ji,jj,jk) =  phdiv(ji,jj,jk) + pqvol(ji,jj,jk) * r1_e1e2t(ji,jj)   &
             &                             / e3t(ji,jj,jk,Kmm)
Index: NEMO/trunk/src/OCE/SBC/sbcrnf.F90
===================================================================
--- NEMO/trunk/src/OCE/SBC/sbcrnf.F90	(revision 15053)
+++ NEMO/trunk/src/OCE/SBC/sbcrnf.F90	(revision 15055)
@@ -211,5 +211,5 @@
       IF( ln_rnf_depth .OR. ln_rnf_depth_ini ) THEN      !==   runoff distributed over several levels   ==!
          IF( ln_linssh ) THEN    !* constant volume case : just apply the runoff input flow
-            DO_2D_OVR( nn_hls-1, nn_hls, nn_hls-1, nn_hls )
+            DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls )
                DO jk = 1, nk_rnf(ji,jj)
                   phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rho0 / h_rnf(ji,jj)
