diff --git a/src/MNH/mode_mnh_timing.f90 b/src/MNH/mode_mnh_timing.f90
index 35d7c559ad4193581e19a2e885659d9287214e37..9d0c5b0cf76d0b57982c278ba8faff1765e59e3f 100644
--- a/src/MNH/mode_mnh_timing.f90
+++ b/src/MNH/mode_mnh_timing.f90
@@ -2,13 +2,15 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!------------------------------------------------------------------------
 MODULE MODE_MNH_TIMING
 !
-! Modification :
-! J.ESCOBAR 13/11/2008 : change (2) in (:) for bug in IBM-SP6 compiler
-! J.Escobar 1/09/2011  : reduce 'timing' format
-! J.Escobar 12/02/2013 : tribulle to slow on large BG partition , inhib it by a early return in the code 
-! Philippe Wautelet: 10/01/2019: use NEWUNIT argument of OPEN
+! Modifications:
+!  J. escobar  13/11/2008: change (2) in (:) for bug in IBM-SP6 compiler
+!  J. Escobar  01/09/2011: reduce 'timing' format
+!  J. Escobar  12/02/2013: triabulle too slow on large BG partition, inhib it by a early return in the code
+!  P. Wautelet 10/01/2019: use NEWUNIT argument of OPEN
+!  P. Wautelet 22/03/2019: use MNHREAL64 and MNHREAL64_MPI + typo corrections
 !
 
 INTEGER     :: NLUOUT_TIMING
@@ -53,7 +55,7 @@ END SUBROUTINE SECOND_MNH2
       
       SUBROUTINE TIMING_LEGEND()
         CALL  TIMING_SEPARATOR('-')
-        WRITE(NLUOUT_TIMING,FMT="( '|     CPUTIM/ELAPSE                     |&
+        WRITE(NLUOUT_TIMING,FMT="( '|     CPUTIME/ELAPSED                   |&
          &|   SUM(PROC)   |MEAN(PROC)| MIN(PROC | MAX(PROC)| PERCENT %|')" ) 
         CALL  TIMING_SEPARATOR('-')
       END SUBROUTINE TIMING_LEGEND
@@ -84,33 +86,30 @@ END SUBROUTINE SECOND_MNH2
 !*       0.    DECLARATIONS
 !
   USE MODD_MPIF
-  USE MODD_VAR_ll, ONLY : MPI_PRECISION, NPROC, IP
-  !JUANZ
-  USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
-  !JUANZ
+  use modd_precision, only: MNHREAL64, MNHREAL64_MPI
+  USE MODD_VAR_ll,    ONLY: IP, NMNH_COMM_WORLD, NPROC
   !
   IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
 ! 
-  REAL*8,DIMENSION(:), INTENT(IN)         :: PRES ! (1)=CPU & (2)=ELAPSE Proccessors Timing
-!
-  REAL*8,DIMENSION(:), INTENT(INOUT)      :: PSUM ! (1)=SUM(CPU) & (2)=SUM(ELAPSE) Timing
-!
-  CHARACTER(len=*),  INTENT(IN),OPTIONAL :: HPRINT
-  CHARACTER       ,  INTENT(IN),OPTIONAL :: HSEP
-  CHARACTER(len=*),  INTENT(IN),OPTIONAL :: HFULL
+  REAL(kind=MNHREAL64), DIMENSION(:), INTENT(IN)    :: PRES ! (1)=CPU & (2)=ELAPSED Processes Timing
+  REAL(kind=MNHREAL64), DIMENSION(:), INTENT(INOUT) :: PSUM ! (1)=SUM(CPU) & (2)=SUM(ELAPSED) Timing
+  CHARACTER(len=*), OPTIONAL,         INTENT(IN)    :: HPRINT
+  CHARACTER       , OPTIONAL,         INTENT(IN)    :: HSEP
+  CHARACTER(len=*), OPTIONAL,         INTENT(IN)    :: HFULL
 !
 !*       0.2   Declarations of local variables :
 !
   INTEGER,PARAMETER         :: NSTAT=5
-  REAL*8,DIMENSION(2,NSTAT) :: ZSTAT ! (1)=Sum(proc),(2)=Sum/Nproc,(3)=Min(proc),(4)=Max(proc),(5)=Purcent(1)
+
   INTEGER                   :: INFO,IROOT,JP
   CHARACTER(len=30)         :: VIDE = ""
-  CHARACTER(len=30)        :: FILE = ""
+  CHARACTER(len=30)         :: FILE = ""
   INTEGER                   :: IC
 
-  REAL*8,DIMENSION(2,NPROC)   :: ZSTAT_ALL 
+  REAL(kind=MNHREAL64), DIMENSION(2,NSTAT) :: ZSTAT ! (1)=Sum(proc),(2)=Sum/Nproc,(3)=Min(proc),(4)=Max(proc),(5)=Percent(1)
+  REAL(kind=MNHREAL64), DIMENSION(2,NPROC) :: ZSTAT_ALL
   INTEGER, DIMENSION(NPROC) :: IND
   INTEGER :: ILU
 !
@@ -120,15 +119,15 @@ END SUBROUTINE SECOND_MNH2
 !           ------------------------------
 INFO = -1
 ! 1.1 Sum(Proc)
-  CALL MPI_ALLREDUCE(PRES, ZSTAT(:,1), 2, MPI_REAL8, &
+  CALL MPI_ALLREDUCE(PRES, ZSTAT(:,1), 2, MNHREAL64_MPI, &
                      MPI_SUM, NMNH_COMM_WORLD, INFO)
 ! 1.2 Sum/Proc
   ZSTAT(:,2) = ZSTAT(:,1 ) / NPROC
 ! 1.3 Min(Proc)
-  CALL MPI_ALLREDUCE(PRES, ZSTAT(:,3), 2, MPI_REAL8, &
+  CALL MPI_ALLREDUCE(PRES, ZSTAT(:,3), 2, MNHREAL64_MPI, &
                      MPI_MIN, NMNH_COMM_WORLD, INFO)
 ! 1.4 Max(Proc)
-  CALL MPI_ALLREDUCE(PRES, ZSTAT(:,4), 2, MPI_REAL8, &
+  CALL MPI_ALLREDUCE(PRES, ZSTAT(:,4), 2, MNHREAL64_MPI, &
                      MPI_MAX, NMNH_COMM_WORLD, INFO)
 
 
@@ -138,8 +137,8 @@ INFO = -1
   !
 
   ELSEIF ( ZSTAT(1,1) > 0.0 ) THEN
-   ! use Psum , for print stat & pourcent
-   ! Purcent
+   ! use Psum , for print stat & percent
+   ! Percent
      WHERE ( PSUM /= 0.0 )
         ZSTAT(:,5) = 100.0 * ZSTAT(:,1) / PSUM(:)
      ELSEWHERE
@@ -148,14 +147,14 @@ INFO = -1
    ! print stat
    !
    IF (PRESENT(HSEP)) CALL  TIMING_SEPARATOR(HSEP)
-   WRITE(NLUOUT_TIMING,FMT= "('|',A30,'| CPUTIM ||',F15.3,'|',4(F10.3,'|'),F7.3,'|')" ) HPRINT//VIDE,ZSTAT(1,:)
-   WRITE(NLUOUT_TIMING,FMT= "('|',A30,'| ELAPSE ||',F15.3,'|',4(F10.3,'|'),F7.3,'|')" ) HPRINT//VIDE,ZSTAT(2,:)
+   WRITE(NLUOUT_TIMING,FMT= "('|',A29,'| CPUTIME ||',F15.3,'|',4(F10.3,'|'),F7.3,'|')" ) HPRINT//VIDE,ZSTAT(1,:)
+   WRITE(NLUOUT_TIMING,FMT= "('|',A29,'| ELAPSED ||',F15.3,'|',4(F10.3,'|'),F7.3,'|')" ) HPRINT//VIDE,ZSTAT(2,:)
 
    IF (PRESENT(HFULL)) THEN
       ! gather all data
       !CALL  TIMING_SEPARATOR(HSEP)
       IROOT = 0
-      CALL MPI_GATHER(PRES(:),2,MPI_REAL8,ZSTAT_ALL(:,1),2,MPI_REAL8,&
+      CALL MPI_GATHER(PRES(:),2,MNHREAL64_MPI,ZSTAT_ALL(:,1),2,MNHREAL64_MPI,&
            IROOT,NMNH_COMM_WORLD, INFO)
       IF (IP.EQ.1) THEN
          FILE = trim(adjustl(HPRINT))
@@ -188,17 +187,17 @@ INFO = -1
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 subroutine triabulle(vec,ind)
-implicit none
-
-real*8   , intent(inout)   :: vec(:)
-integer, intent(out)  :: ind(:)
+use modd_precision, only: MNHREAL64
 
+implicit none
 
-integer               :: n 
+real(kind=MNHREAL64), dimension(:), intent(inout) :: vec
+integer,              dimension(:), intent(out)   :: ind
 
 logical :: a
 integer :: i
 integer :: mem
+integer :: n
 
 n = size(vec)
 a = .true.
@@ -207,7 +206,7 @@ do i=1,n
 enddo
 
 return
-!JUAN TO SLOW ON BG !!!
+!JUAN TOO SLOW ON BG !!!
 
 do while (a)
    a=.false.