diff --git a/src/OCE/DIA/diaar5.F90 b/src/OCE/DIA/diaar5.F90
index a22ad16402f62f5ef9e66b1ac750b99ce1a07fa5..05da27cd8c3aff8481bade6887171ae1345125b0 100644
--- a/src/OCE/DIA/diaar5.F90
+++ b/src/OCE/DIA/diaar5.F90
@@ -79,7 +79,7 @@ CONTAINS
       REAL(wp), ALLOCATABLE, DIMENSION(:,:)     :: z2d                   ! 2D workspace
       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)   :: z3d
       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)   :: zrhd, zgdept          ! 3D workspace (zgdept: needed to use the substitute)
-      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztsn                       ! 4D workspace
+      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztsn                  ! 4D workspace
       !!--------------------------------------------------------------------
       IF( ln_timing )   CALL timing_start('dia_ar5')
 
diff --git a/src/OCE/DIA/diahth.F90 b/src/OCE/DIA/diahth.F90
index dcec1291f14d8dc7425d319ba4923d5ab6e053c2..e7ebca2d5866907acf77c0ad9efe12a467175e58 100644
--- a/src/OCE/DIA/diahth.F90
+++ b/src/OCE/DIA/diahth.F90
@@ -54,8 +54,8 @@ CONTAINS
       INTEGER :: dia_hth_alloc
       !!---------------------------------------------------------------------
       !
-      ALLOCATE( hth(jpi,jpj), hd20(jpi,jpj), hd26(jpi,jpj), hd28(jpi,jpj), &
-         &      htc3(jpi,jpj), htc7(jpi,jpj), htc20(jpi,jpj), STAT=dia_hth_alloc )
+      ALLOCATE( hth(A2D(0)), hd20(A2D(0)), hd26(A2D(0)), hd28(A2D(0)), &
+         &      htc3(A2D(0)), htc7(A2D(0)), htc20(A2D(0)), STAT=dia_hth_alloc )
       !
       CALL mpp_sum ( 'diahth', dia_hth_alloc )
       IF(dia_hth_alloc /= 0)   CALL ctl_stop( 'STOP', 'dia_hth_alloc: failed to allocate arrays.' )
@@ -301,7 +301,7 @@ CONTAINS
       !
       INTEGER , INTENT(in) :: Kmm      ! ocean time level index
       REAL(wp), INTENT(in) :: ptem
-      REAL(wp), DIMENSION(jpi,jpj), INTENT(out) :: pdept     
+      REAL(wp), DIMENSION(A2D(0)), INTENT(out) :: pdept     
       !
       INTEGER  :: ji, jj, jk, iid
       REAL(wp) :: zztmp, zzdep
@@ -346,7 +346,7 @@ CONTAINS
       INTEGER , INTENT(in) ::   Kmm      ! ocean time level index
       REAL(wp), INTENT(in) ::   pdep     ! depth over the heat content
       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in)    ::   pt   
-      REAL(wp), DIMENSION(jpi,jpj),     INTENT(inout) ::   phtc  
+      REAL(wp), DIMENSION(A2D(0)),      INTENT(inout) ::   phtc  
       !
       INTEGER  ::   ji, jj, jk, ik
       REAL(wp), DIMENSION(A2D(0)) ::   zthick
diff --git a/src/OCE/DYN/sshwzv.F90 b/src/OCE/DYN/sshwzv.F90
index aed60c9867a0bf15de6a512fc0a05d86e5e091b5..71452dc724638bab003b031b02f13861ec9637ae 100644
--- a/src/OCE/DYN/sshwzv.F90
+++ b/src/OCE/DYN/sshwzv.F90
@@ -315,7 +315,8 @@ CONTAINS
          IF(lwp) WRITE(numout,*) 'wzv_RK3 : now vertical velocity '
          IF(lwp) WRITE(numout,*) '~~~~~ '
          !
-         pww(:,:,jpk) = 0._wp                  ! bottom boundary condition: w=0 (set once for all)
+         pww(:,:,:) = 0._wp                  ! bottom boundary condition: w=0 (set once for all)
+         !                                   ! needed over the halos for the output (ww+wi) in diawri.F90
       ENDIF
       !
       CALL div_hor( kt, Kbb, Kmm, puu, pvv, ze3div )