diff --git a/src/MNH/tridiag_w.f90 b/src/MNH/tridiag_w.f90
index b31b2d19e5c0f05625ad34bc9608ba67b6d7a34e..f16bbd8ef6329be9fc390645c9804cb9babdf3c3 100644
--- a/src/MNH/tridiag_w.f90
+++ b/src/MNH/tridiag_w.f90
@@ -8,13 +8,13 @@
 INTERFACE
 !
        SUBROUTINE TRIDIAG_W(PVARM,PF,PDFDDWDZ,PTSTEP,  &
-                                 PMZM_DZZ,PRHODJ,PVARP )
+                                 PMZF_DZZ,PRHODJ,PVARP )
 !
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PVARM   ! variable at t-1      at flux point
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PF      ! flux in dT/dt=-dF/dz at mass point
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PDFDDWDZ! dF/d(dT/dz)          at mass point
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PDFDDWDZ! dF/d(dW/dz)          at mass point
 REAL,                   INTENT(IN) :: PTSTEP  ! Double time step
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PMZM_DZZ! Dz                   at mass point
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PMZF_DZZ! Dz                   at mass point
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ  ! (dry rho)*J          at mass point
 !
 REAL, DIMENSION(:,:,:), INTENT(OUT):: PVARP   ! variable at t+1      at flux point
@@ -30,7 +30,7 @@ END MODULE MODI_TRIDIAG_W
 
 !      #################################################
        SUBROUTINE TRIDIAG_W(PVARM,PF,PDFDDWDZ,PTSTEP, &
-                                 PMZM_DZZ,PRHODJ,PVARP)
+                                 PMZF_DZZ,PRHODJ,PVARP)
 !      #################################################
 !
 !
@@ -55,16 +55,16 @@ END MODULE MODI_TRIDIAG_W
 !!    (PRHODJ(k)+PRHODJ(k-1))/2.*PVARP(k)/PTSTEP
 !!              = 
 !!    (PRHODJ(k)+PRHODJ(k-1))/2.*PVARM(k)/PTSTEP 
-!!  - PRHODJ(k)   * PF(k  )/PMZM_PDZZ(k  )
-!!  + PRHODJ(k-1) * PF(k-1)/PMZM_PDZZ(k-1)
-!!  - PRHODJ(k)   * PDFDDWDZ(k)   * PVARP(k+1)/PMZM_DZZ(k)**2
-!!  + PRHODJ(k)   * PDFDDWDZ(k)   * PVARP(k)  /PMZM_DZZ(k)**2
-!!  + PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARP(k)  /PMZM_DZZ(k-1)**2
-!!  - PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARP(k-1)/PMZM_DZZ(k-1)**2
-!!  + PRHODJ(k)   * PDFDDWDZ(k)   * PVARM(k+1)/PMZM_DZZ(k)**2
-!!  - PRHODJ(k)   * PDFDDWDZ(k)   * PVARM(k)  /PMZM_DZZ(k)**2
-!!  - PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARM(k)  /PMZM_DZZ(k-1)**2
-!!  + PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARM(k-1)/PMZM_DZZ(k-1)**2
+!!  - PRHODJ(k)   * PF(k  )/PMZF_PDZZ(k  )
+!!  + PRHODJ(k-1) * PF(k-1)/PMZF_PDZZ(k-1)
+!!  - PRHODJ(k)   * PDFDDWDZ(k)   * PVARP(k+1)/PMZF_DZZ(k)**2
+!!  + PRHODJ(k)   * PDFDDWDZ(k)   * PVARP(k)  /PMZF_DZZ(k)**2
+!!  + PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARP(k)  /PMZF_DZZ(k-1)**2
+!!  - PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARP(k-1)/PMZF_DZZ(k-1)**2
+!!  + PRHODJ(k)   * PDFDDWDZ(k)   * PVARM(k+1)/PMZF_DZZ(k)**2
+!!  - PRHODJ(k)   * PDFDDWDZ(k)   * PVARM(k)  /PMZF_DZZ(k)**2
+!!  - PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARM(k)  /PMZF_DZZ(k-1)**2
+!!  + PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARM(k-1)/PMZF_DZZ(k-1)**2
 !!
 !!
 !!    The system to solve is:
@@ -75,12 +75,12 @@ END MODULE MODI_TRIDIAG_W
 !!    The RHS of the linear system in PVARP writes:
 !!
 !! y(k)    = (PRHODJ(k)+PRHODJ(k-1))/2.*PVARM(k)/PTSTEP
-!!        - PRHODJ(k)   * PF(k  )/PMZM_PDZZ(k  )
-!!        + PRHODJ(k-1) * PF(k-1)/PMZM_PDZZ(k-1)
-!!        + PRHODJ(k)   * PDFDDWDZ(k)   * PVARM(k+1)/PMZM_DZZ(k)**2
-!!        - PRHODJ(k)   * PDFDDWDZ(k)   * PVARM(k)  /PMZM_DZZ(k)**2
-!!        - PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARM(k)  /PMZM_DZZ(k-1)**2
-!!        + PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARM(k-1)/PMZM_DZZ(k-1)**2
+!!        - PRHODJ(k)   * PF(k  )/PMZF_PDZZ(k  )
+!!        + PRHODJ(k-1) * PF(k-1)/PMZF_PDZZ(k-1)
+!!        + PRHODJ(k)   * PDFDDWDZ(k)   * PVARM(k+1)/PMZF_DZZ(k)**2
+!!        - PRHODJ(k)   * PDFDDWDZ(k)   * PVARM(k)  /PMZF_DZZ(k)**2
+!!        - PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARM(k)  /PMZF_DZZ(k-1)**2
+!!        + PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARM(k-1)/PMZF_DZZ(k-1)**2
 !!
 !!                      
 !!        Then, the classical TRIDIAGonal algorithm is used to invert the 
@@ -98,22 +98,28 @@ END MODULE MODI_TRIDIAG_W
 !!     ikb and ike represent the first and the last inner mass levels of the
 !!     model. The coefficients are:
 !!         
-!! a(k) = + PRHODJ(k-1) * PDFDDWDZ(k-1)/PMZM_DZZ(k-1)**2
+!! a(k) = + PRHODJ(k-1) * PDFDDWDZ(k-1)/PMZF_DZZ(k-1)**2
 !! b(k) =   (PRHODJ(k)+PRHODJ(k-1))/2. / PTSTEP
-!!        - PRHODJ(k)   * PDFDDWDZ(k)  /PMZM_DZZ(k)**2
-!!        - PRHODJ(k-1) * PDFDDWDZ(k-1)/PMZM_DZZ(k-1)**2
-!! c(k) = + PRHODJ(k)   * PDFDDWDZ(k)/PMZM_DZZ(k)**2
+!!        - PRHODJ(k)   * PDFDDWDZ(k)  /PMZF_DZZ(k)**2
+!!        - PRHODJ(k-1) * PDFDDWDZ(k-1)/PMZF_DZZ(k-1)**2
+!! c(k) = + PRHODJ(k)   * PDFDDWDZ(k)/PMZF_DZZ(k)**2
 !!
 !!          for all k /= ikb or ike
 !!
+!! with the boundary conditions:
+!!      PVARP(ikb-1) = PVARP(ikb)
+!!      PVARP(ike+1) = 0.
+!!
+!! This induces:
 !!
 !! b(ikb) =   (PRHODJ(ikb)+PRHODJ(ikb-1))/2. / PTSTEP
-!!          - PRHODJ(ikb)   * PDFDDWDZ(ikb)  /PMZM_DZZ(ikb)**2
-!! c(ikb) = + PRHODJ(ikb)   * PDFDDWDZ(ikb)/PMZM_DZZ(ikb)**2
+!!          - PRHODJ(ikb)   * PDFDDWDZ(ikb)  /PMZF_DZZ(ikb)**2
+!! c(ikb) = + PRHODJ(ikb)   * PDFDDWDZ(ikb)/PMZF_DZZ(ikb)**2
 !!
 !! b(ike) =  (PRHODJ(ike)+PRHODJ(ike-1))/2. / PTSTEP
-!!        - PRHODJ(ike-1) * PDFDDWDZ(ike-1)/PMZM_DZZ(ike-1)**2
-!! a(ike) = + PRHODJ(ike-1) * PDFDDWDZ(ike-1)/PMZM_DZZ(ike-1)**2
+!!        - PRHODJ(ike-1) * PDFDDWDZ(ike-1)/PMZF_DZZ(ike-1)**2
+!!        - PRHODJ(ike  ) * PDFDDWDZ(ike  )/PMZF_DZZ(ike  )**2
+!! a(ike) = + PRHODJ(ike-1) * PDFDDWDZ(ike-1)/PMZF_DZZ(ike-1)**2
 !!
 !!
 !!     EXTERNAL
@@ -135,6 +141,7 @@ END MODULE MODI_TRIDIAG_W
 !!     MODIFICATIONS
 !!     -------------
 !!       Original        04/2011 (from tridiag_thermo.f90)
+!!                       03/2014 modification of upper boundary condition
 !! ---------------------------------------------------------------------
 !
 !*       0. DECLARATIONS
@@ -150,9 +157,9 @@ IMPLICIT NONE
 !
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PVARM   ! variable at t-1      at flux point
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PF      ! flux in dT/dt=-dF/dz at mass point
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PDFDDWDZ! dF/d(dT/dz)          at mass point
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PDFDDWDZ! dF/d(dW/dz)          at mass point
 REAL,                   INTENT(IN) :: PTSTEP  ! Double time step
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PMZM_DZZ! Dz                   at mass point
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PMZF_DZZ! Dz                   at mass point
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ  ! (dry rho)*J          at mass point
 !
 REAL, DIMENSION(:,:,:), INTENT(OUT):: PVARP   ! variable at t+1      at flux point
@@ -180,7 +187,7 @@ IKE=SIZE(PVARM,3)-JPVEXT
 IKU=SIZE(PVARM,3)
 !
 ZMZM_RHODJ  = MZM(1,IKU,1,PRHODJ)
-ZRHODJ_DFDDWDZ_O_DZ2 = PRHODJ*PDFDDWDZ/PMZM_DZZ**2
+ZRHODJ_DFDDWDZ_O_DZ2 = PRHODJ*PDFDDWDZ/PMZF_DZZ**2
 !
 ZA=0.
 ZB=0.
@@ -192,23 +199,23 @@ ZY=0.
 !           ---------------------------
 !
 !! y(k)    = (PRHODJ(k)+PRHODJ(k-1))/2.*PVARM(k)/PTSTEP
-!!        - PRHODJ(k)   * PF(k  )/PMZM_PDZZ(k  )
-!!        + PRHODJ(k-1) * PF(k-1)/PMZM_PDZZ(k-1)
-!!        + PRHODJ(k)   * PDFDDWDZ(k)   * PVARM(k+1)/PMZM_DZZ(k)**2
-!!        - PRHODJ(k)   * PDFDDWDZ(k)   * PVARM(k)  /PMZM_DZZ(k)**2
-!!        - PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARM(k)  /PMZM_DZZ(k-1)**2
-!!        + PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARM(k-1)/PMZM_DZZ(k-1)**2
+!!        - PRHODJ(k)   * PF(k  )/PMZF_PDZZ(k  )
+!!        + PRHODJ(k-1) * PF(k-1)/PMZF_PDZZ(k-1)
+!!        + PRHODJ(k)   * PDFDDWDZ(k)   * PVARM(k+1)/PMZF_DZZ(k)**2
+!!        - PRHODJ(k)   * PDFDDWDZ(k)   * PVARM(k)  /PMZF_DZZ(k)**2
+!!        - PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARM(k)  /PMZF_DZZ(k-1)**2
+!!        + PRHODJ(k-1) * PDFDDWDZ(k-1) * PVARM(k-1)/PMZF_DZZ(k-1)**2
 !
 ZY(:,:,IKB) = ZMZM_RHODJ(:,:,IKB)*PVARM(:,:,IKB)/PTSTEP              &
-    - PRHODJ(:,:,IKB  ) * PF(:,:,IKB  )/PMZM_DZZ(:,:,IKB  )           &
-    + PRHODJ(:,:,IKB-1) * PF(:,:,IKB-1)/PMZM_DZZ(:,:,IKB-1)           &
+    - PRHODJ(:,:,IKB  ) * PF(:,:,IKB  )/PMZF_DZZ(:,:,IKB  )           &
+    + PRHODJ(:,:,IKB-1) * PF(:,:,IKB-1)/PMZF_DZZ(:,:,IKB-1)           &
     + ZRHODJ_DFDDWDZ_O_DZ2(:,:,IKB) * PVARM(:,:,IKB+1)&
     - ZRHODJ_DFDDWDZ_O_DZ2(:,:,IKB) * PVARM(:,:,IKB  )
 !
 DO JK=IKB+1,IKE-1
   ZY(:,:,JK) = ZMZM_RHODJ(:,:,JK)*PVARM(:,:,JK)/PTSTEP               &
-    - PRHODJ(:,:,JK  ) * PF(:,:,JK  )/PMZM_DZZ(:,:,JK  )              &
-    + PRHODJ(:,:,JK-1) * PF(:,:,JK-1)/PMZM_DZZ(:,:,JK-1)              &
+    - PRHODJ(:,:,JK  ) * PF(:,:,JK  )/PMZF_DZZ(:,:,JK  )              &
+    + PRHODJ(:,:,JK-1) * PF(:,:,JK-1)/PMZF_DZZ(:,:,JK-1)              &
     + ZRHODJ_DFDDWDZ_O_DZ2(:,:,JK  ) * PVARM(:,:,JK+1)  &
     - ZRHODJ_DFDDWDZ_O_DZ2(:,:,JK  ) * PVARM(:,:,JK  )  &
     - ZRHODJ_DFDDWDZ_O_DZ2(:,:,JK-1) * PVARM(:,:,JK  )  &
@@ -216,8 +223,9 @@ DO JK=IKB+1,IKE-1
 END DO
 ! 
 ZY(:,:,IKE) = ZMZM_RHODJ(:,:,IKE)*PVARM(:,:,IKE)/PTSTEP              &
-    - PRHODJ(:,:,IKE  ) * PF(:,:,IKE  )/PMZM_DZZ(:,:,IKE  )           &
-    + PRHODJ(:,:,IKE-1) * PF(:,:,IKE-1)/PMZM_DZZ(:,:,IKE-1)           &
+    - PRHODJ(:,:,IKE  ) * PF(:,:,IKE  )/PMZF_DZZ(:,:,IKE  )           &
+    + PRHODJ(:,:,IKE-1) * PF(:,:,IKE-1)/PMZF_DZZ(:,:,IKE-1)           &
+    - ZRHODJ_DFDDWDZ_O_DZ2(:,:,IKE  ) * PVARM(:,:,IKE )  &
     - ZRHODJ_DFDDWDZ_O_DZ2(:,:,IKE-1) * PVARM(:,:,IKE  ) &
     + ZRHODJ_DFDDWDZ_O_DZ2(:,:,IKE-1) * PVARM(:,:,IKE-1)
 !
@@ -229,26 +237,27 @@ ZY(:,:,IKE) = ZMZM_RHODJ(:,:,IKE)*PVARM(:,:,IKE)/PTSTEP              &
 !*       3.1 arrays A, B, C
 !            --------------
 !
-!! a(k) = + PRHODJ(k-1) * PDFDDWDZ(k-1)/PMZM_DZZ(k-1)**2
+!! a(k) = + PRHODJ(k-1) * PDFDDWDZ(k-1)/PMZF_DZZ(k-1)**2
 !! b(k) =   (PRHODJ(k)+PRHODJ(k-1))/2. / PTSTEP
-!!        - PRHODJ(k)   * PDFDDWDZ(k)  /PMZM_DZZ(k)**2
-!!        - PRHODJ(k-1) * PDFDDWDZ(k-1)/PMZM_DZZ(k-1)**2
-!! c(k) = + PRHODJ(k)   * PDFDDWDZ(k)/PMZM_DZZ(k)**2
+!!        - PRHODJ(k)   * PDFDDWDZ(k)  /PMZF_DZZ(k)**2
+!!        - PRHODJ(k-1) * PDFDDWDZ(k-1)/PMZF_DZZ(k-1)**2
+!! c(k) = + PRHODJ(k)   * PDFDDWDZ(k)/PMZF_DZZ(k)**2
 !
-  ZB(:,:,IKB) =   PRHODJ(:,:,IKB)/PTSTEP                   &
+  ZB(:,:,IKB) =   ZMZM_RHODJ(:,:,IKB)/PTSTEP      &
                 - ZRHODJ_DFDDWDZ_O_DZ2(:,:,IKB)
   ZC(:,:,IKB) =   ZRHODJ_DFDDWDZ_O_DZ2(:,:,IKB)
 
   DO JK=IKB+1,IKE-1
     ZA(:,:,JK) =   ZRHODJ_DFDDWDZ_O_DZ2(:,:,JK-1)
-    ZB(:,:,JK) =   ZMZM_RHODJ(:,:,JK)/PTSTEP                   &
+    ZB(:,:,JK) =   ZMZM_RHODJ(:,:,JK)/PTSTEP      &
                  - ZRHODJ_DFDDWDZ_O_DZ2(:,:,JK  ) &
                  - ZRHODJ_DFDDWDZ_O_DZ2(:,:,JK-1)
     ZC(:,:,JK) =   ZRHODJ_DFDDWDZ_O_DZ2(:,:,JK  )
   END DO
 
   ZA(:,:,IKE) =   ZRHODJ_DFDDWDZ_O_DZ2(:,:,IKE-1)
-  ZB(:,:,IKE) =   PRHODJ(:,:,IKE)/PTSTEP                   &
+  ZB(:,:,IKE) =   ZMZM_RHODJ(:,:,IKE)/PTSTEP      &
+                - ZRHODJ_DFDDWDZ_O_DZ2(:,:,IKE  ) &
                 - ZRHODJ_DFDDWDZ_O_DZ2(:,:,IKE-1)
 !
 !*       3.2 going up
@@ -286,7 +295,7 @@ ZY(:,:,IKE) = ZMZM_RHODJ(:,:,IKE)*PVARM(:,:,IKE)/PTSTEP              &
 !            ----------------------------------------
 !
 PVARP(:,:,IKB-1)=PVARP(:,:,IKB)
-PVARP(:,:,IKE+1)=PVARP(:,:,IKE)
+PVARP(:,:,IKE+1)=0.
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90
index 0b9bfeb77954c00f7e757a6c1af146e9e5e17855..1fbb673f5de05f9741f423d323a45c1c4de05fdd 100644
--- a/src/MNH/turb_hor_dyn_corr.f90
+++ b/src/MNH/turb_hor_dyn_corr.f90
@@ -138,6 +138,8 @@ END MODULE MODI_TURB_HOR_DYN_CORR
 !!                     October 2009 (G. Tanguy) add ILENCH=LEN(YCOMMENT) after
 !!                                              change of YCOMMENT
 !!                     July 2012     (V.Masson) Implicitness of W
+!!                     March 2014    (V.Masson) tridiag_w : bug between
+!!                                               mass and flux position
 !! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -247,7 +249,7 @@ REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3))  :: GX_U_M_PUM
 REAL, DIMENSION(SIZE(PVM,1),SIZE(PVM,2),SIZE(PVM,3))  :: GY_V_M_PVM
 REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: GZ_W_M_PWM
 REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: GZ_W_M_ZWP
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: ZMZM_DZZ   ! MZM(PDZZ)
+REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: ZMZF_DZZ   ! MZF(PDZZ)
 REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: ZDFDDWDZ   ! formal derivative of the 
 !                                                                   ! flux (variable: dW/dz)
 REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: ZWP        ! W at future   time-step
@@ -284,7 +286,7 @@ GX_U_M_PUM = GX_U_M(1,IKU,1,PUM,PDXX,PDZZ,PDZX)
 IF (.NOT. L2D) GY_V_M_PVM = GY_V_M(1,IKU,1,PVM,PDYY,PDZZ,PDZY)
 GZ_W_M_PWM = GZ_W_M(1,IKU,1,PWM,PDZZ)
 !
-ZMZM_DZZ = MZM(1,IKU,1,PDZZ)
+ZMZF_DZZ = MZF(1,IKU,1,PDZZ)
 !
 CALL ADD3DFIELD_ll(TZFIELDS_ll, ZFLX)
 
@@ -561,7 +563,7 @@ END IF
 ZDFDDWDZ(:,:,:)    = - XCMFS * PK(:,:,:) * (4./3.)
 ZDFDDWDZ(:,:,:IKB) = 0.
 !
-CALL TRIDIAG_W(PWM,ZFLX,ZDFDDWDZ,PTSTEP,ZMZM_DZZ,PRHODJ,ZWP)
+CALL TRIDIAG_W(PWM,ZFLX,ZDFDDWDZ,PTSTEP,ZMZF_DZZ,PRHODJ,ZWP)
 !
 PRWS = PRWS(:,:,:) + MZM(1,IKU,1,PRHODJ(:,:,:))*(ZWP(:,:,:)-PWM(:,:,:))/PTSTEP
 !