diff --git a/src/LIB/SURCOUCHE/src/mode_gather.f90 b/src/LIB/SURCOUCHE/src/mode_gather.f90
index 613aa8f280036112a77b8a467fe6b90a26a0a26d..631362f1caf295c21d3f16bac589772a8db11818 100644
--- a/src/LIB/SURCOUCHE/src/mode_gather.f90
+++ b/src/LIB/SURCOUCHE/src/mode_gather.f90
@@ -4,17 +4,17 @@
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 ! Modifications:
-!   J.Escobar 10/02/2012 : Bug , in MPI_RECV replace MPI_STATUSES_IGNORE
-!                          with MPI_STATUS_IGNORE
-!   J.Escobar 22/05/2012 : Bug in ISEND with non-contiguous buffer , reintroduce intermediate buffer
-!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  J. Escobar  10/02/2012: bug in MPI_RECV: replace MPI_STATUSES_IGNORE with MPI_STATUS_IGNORE
+!  J. Escobar  22/05/2012: bug in ISEND with non-contiguous buffer: reintroduce intermediate buffer
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !
 !-----------------------------------------------------------------
 
 MODULE MODE_GATHER_ll
 
 USE MODD_MPIF
-use modd_precision, only: MNHREAL_MPI
+use modd_precision, only: MNHINT_MPI, MNHLOG_MPI, MNHREAL_MPI
 USE MODD_VAR_ll,    ONLY: NMNH_COMM_WORLD
 
 IMPLICIT NONE 
@@ -134,7 +134,7 @@ ELSE
   PRINT *,'Error GATHERALL_N1'
 END IF
 ! KRECV variable of IROOT processor contains the global field
-CALL MPI_BCAST(KRECV,SIZE(KRECV),MPI_INTEGER,IROOT-1,NMNH_COMM_WORLD,KRESP)
+CALL MPI_BCAST(KRECV,SIZE(KRECV),MNHINT_MPI,IROOT-1,NMNH_COMM_WORLD,KRESP)
 
 END SUBROUTINE GATHERALL_N1
 
@@ -157,7 +157,7 @@ ELSE
   PRINT *,'Error GATHERALL_N2'
 END IF
 ! KRECV variable of IROOT processor contains the global field
-CALL MPI_BCAST(KRECV,SIZE(KRECV),MPI_INTEGER,IROOT-1,NMNH_COMM_WORLD,KRESP)
+CALL MPI_BCAST(KRECV,SIZE(KRECV),MNHINT_MPI,IROOT-1,NMNH_COMM_WORLD,KRESP)
 
 END SUBROUTINE GATHERALL_N2
 
@@ -181,7 +181,7 @@ ELSE
   KRESP = -1
 END IF
 ! ORECV variable of IROOT processor contains the global field
-CALL MPI_BCAST(ORECV,SIZE(ORECV),MPI_LOGICAL,IROOT-1,NMNH_COMM_WORLD,KRESP)
+CALL MPI_BCAST(ORECV,SIZE(ORECV),MNHLOG_MPI,IROOT-1,NMNH_COMM_WORLD,KRESP)
 
 END SUBROUTINE GATHERALL_L3
 
@@ -598,7 +598,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN 
         ITP = KSEND(IXO:IXE)
       ELSE 
-        CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN 
@@ -606,7 +606,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN 
         ITP = KSEND(IYO:IYE)
       ELSE 
-        CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -618,10 +618,10 @@ ELSE
   
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     ITP=>KSEND(IXO:IXE)
-    CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     ITP=>KSEND(IYO:IYE)
-    CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -661,7 +661,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN 
         ITP = KSEND(IXO:IXE,:)
       ELSE 
-        CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN 
@@ -669,7 +669,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN 
         ITP = KSEND(IYO:IYE,:)
       ELSE 
-        CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -681,10 +681,10 @@ ELSE
   
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     ITP=>KSEND(IXO:IXE,:)
-    CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     ITP=>KSEND(IYO:IYE,:)
-    CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -722,7 +722,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN
         IP = KSEND(IXO:IXE,:,:)
       ELSE
-        CALL MPI_RECV(IP,SIZE(IP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(IP,SIZE(IP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
@@ -730,7 +730,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN
         IP = KSEND(IYO:IYE,:,:)
       ELSE
-        CALL MPI_RECV(IP,SIZE(IP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(IP,SIZE(IP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -742,10 +742,10 @@ ELSE
 
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     IP=>KSEND(IXO:IXE,:,:)
-    CALL MPI_BSEND(IP,SIZE(IP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(IP,SIZE(IP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     IP=>KSEND(IYO:IYE,:,:)
-    CALL MPI_BSEND(IP,SIZE(IP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(IP,SIZE(IP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -784,7 +784,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN
         GTP = OSEND(IXO:IXE)
       ELSE
-        CALL MPI_RECV(GTP,SIZE(GTP),MPI_LOGICAL,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(GTP,SIZE(GTP),MNHLOG_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
@@ -792,7 +792,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN
         GTP = OSEND(IYO:IYE)
       ELSE
-        CALL MPI_RECV(GTP,SIZE(GTP),MPI_LOGICAL,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(GTP,SIZE(GTP),MNHLOG_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -804,10 +804,10 @@ ELSE
 
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     GTP=>OSEND(IXO:IXE)
-    CALL MPI_BSEND(GTP,SIZE(GTP),MPI_LOGICAL,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(GTP,SIZE(GTP),MNHLOG_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     GTP=>OSEND(IYO:IYE)
-    CALL MPI_BSEND(GTP,SIZE(GTP),MPI_LOGICAL,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(GTP,SIZE(GTP),MNHLOG_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -845,7 +845,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN
         IP = OSEND(IXO:IXE,:,:)
       ELSE
-        CALL MPI_RECV(IP,SIZE(IP),MPI_LOGICAL,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(IP,SIZE(IP),MNHLOG_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
@@ -853,7 +853,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN
         IP = OSEND(IYO:IYE,:,:)
       ELSE
-        CALL MPI_RECV(IP,SIZE(IP),MPI_LOGICAL,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(IP,SIZE(IP),MNHLOG_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -865,10 +865,10 @@ ELSE
 
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     IP=>OSEND(IXO:IXE,:,:)
-    CALL MPI_BSEND(IP,SIZE(IP),MPI_LOGICAL,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(IP,SIZE(IP),MNHLOG_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     IP=>OSEND(IYO:IYE,:,:)
-    CALL MPI_BSEND(IP,SIZE(IP),MPI_LOGICAL,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(IP,SIZE(IP),MNHLOG_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -1117,14 +1117,14 @@ IF (ISP == KROOT)  THEN
       CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE)
       ITP = KSEND(IXO:IXE,IYO:IYE)
     ELSE 
-      CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+      CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
     END IF
   END DO
 ELSE 
   ! Other processors
   CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE)
   ITP=>KSEND(IXO:IXE,IYO:IYE)
-  CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+  CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
 END IF
 
 END SUBROUTINE GATHERXY_N2
@@ -1155,7 +1155,7 @@ IF (ISP == KROOT)  THEN
         CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
         IP = KSEND(IXO:IXE,IYO:IYE,:)
       ELSE
-        CALL MPI_RECV(IP,SIZE(IP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(IP,SIZE(IP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -1164,7 +1164,7 @@ ELSE
   CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
   IF (IXO /= 0) THEN ! intersection is not empty
     IP=>KSEND(IXO:IXE,IYO:IYE,:)
-    CALL MPI_BSEND(IP,SIZE(IP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(IP,SIZE(IP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -1196,7 +1196,7 @@ IF (ISP == KROOT)  THEN
         CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
         IP = OSEND(IXO:IXE,IYO:IYE,:)
       ELSE
-        CALL MPI_RECV(IP,SIZE(IP),MPI_LOGICAL,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(IP,SIZE(IP),MNHLOG_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -1205,7 +1205,7 @@ ELSE
   CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
   IF (IXO /= 0) THEN ! intersection is not empty
     IP=>OSEND(IXO:IXE,IYO:IYE,:)
-    CALL MPI_BSEND(IP,SIZE(IP),MPI_LOGICAL,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(IP,SIZE(IP),MNHLOG_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
index 5f97e45f608226807385b7b3056e2ab092ffad46..0b68891388f7088c75bca9392ca291d6eb8d0c2e 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
@@ -13,13 +13,14 @@
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 12/04/2019: use MNHTIME for time measurement variables
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !-----------------------------------------------------------------
 
 MODULE MODE_IO_FIELD_READ
 !
 USE MODD_IO, ONLY : NVERB_FATAL,NVERB_ERROR,NVERB_WARNING,NVERB_INFO,NVERB_DEBUG,TFILEDATA
 USE MODD_MPIF
-use modd_precision, only: MNHREAL_MPI, MNHTIME
+use modd_precision, only: MNHINT_MPI, MNHLOG_MPI, MNHREAL_MPI, MNHTIME
 !
 USE MODE_FIELD
 USE MODE_IO_READ_LFI
@@ -107,9 +108,9 @@ CALL MPI_BCAST(TPFIELD%CUNITS,   LEN(TPFIELD%CUNITS),   MPI_CHARACTER,TPFILE%NMA
 CALL MPI_BCAST(TPFIELD%CDIR,     LEN(TPFIELD%CDIR),     MPI_CHARACTER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
 CALL MPI_BCAST(TPFIELD%CLBTYPE,  LEN(TPFIELD%CLBTYPE),  MPI_CHARACTER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
 CALL MPI_BCAST(TPFIELD%CCOMMENT, LEN(TPFIELD%CCOMMENT), MPI_CHARACTER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
-CALL MPI_BCAST(TPFIELD%NGRID,    1,                     MPI_INTEGER,  TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
-CALL MPI_BCAST(TPFIELD%NTYPE,    1,                     MPI_INTEGER,  TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
-CALL MPI_BCAST(TPFIELD%NDIMS,    1,                     MPI_INTEGER,  TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+CALL MPI_BCAST(TPFIELD%NGRID,    1,                     MNHINT_MPI,   TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+CALL MPI_BCAST(TPFIELD%NTYPE,    1,                     MNHINT_MPI,   TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+CALL MPI_BCAST(TPFIELD%NDIMS,    1,                     MNHINT_MPI,   TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
 !
 END SUBROUTINE IO_Field_metadata_bcast
 
@@ -172,7 +173,7 @@ IF (IRESP==0) THEN
       END IF
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -270,7 +271,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -405,7 +406,7 @@ IF (IRESP==0) THEN
     CALL SECOND_MNH2(T1)
     TIMEZ%T_READ2D_READ=TIMEZ%T_READ2D_READ + T1 - T0
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -590,7 +591,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -668,7 +669,7 @@ IF (IRESP==0) THEN
     END DO
     CALL GA_SYNC
     !
-    CALL MPI_BCAST(IRESP_TMP,1,MPI_INTEGER,IK_RANK-1,TZFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP_TMP,1,MNHINT_MPI,IK_RANK-1,TZFILE%NMPICOMM,IERR)
     IF (IRESP_TMP/=0) IRESP = IRESP_TMP !Keep last "error"
     !
     ! get the columun data in this proc
@@ -741,7 +742,7 @@ IF (IRESP==0) THEN
           TIMEZ%T_READ3D_SEND=TIMEZ%T_READ3D_SEND + T2 - T1
         END IF
         !
-        CALL MPI_BCAST(IRESP_TMP,1,MPI_INTEGER,IK_RANK-1,TZFILE%NMPICOMM,IERR)
+        CALL MPI_BCAST(IRESP_TMP,1,MNHINT_MPI,IK_RANK-1,TZFILE%NMPICOMM,IERR)
         IF (IRESP_TMP/=0) IRESP = IRESP_TMP !Keep last "error"
         TZFILE => NULL()
       END DO
@@ -919,7 +920,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -1044,7 +1045,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -1157,7 +1158,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -1242,13 +1243,13 @@ IF (IRESP==0) THEN
       END IF
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
     IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD)
     !
-    CALL MPI_BCAST(KFIELD,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(KFIELD,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
   END IF
 END IF
 !
@@ -1329,7 +1330,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -1337,7 +1338,7 @@ IF (IRESP==0) THEN
     !
     IF (TPFIELD%CDIR /= 'XX' .AND. TPFIELD%CDIR /='YY') THEN
       ! Broadcast Field
-      CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+      CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     ELSE
       !Scatter Field
       CALL SCATTER_XXFIELD(TPFIELD%CDIR,IFIELDP,KFIELD,TPFILE%NMASTER_RANK,TPFILE%NMPICOMM)
@@ -1445,7 +1446,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -1467,7 +1468,7 @@ IF (IRESP==0) THEN
       END IF
     ELSE
       IF (ISP == TPFILE%NMASTER_RANK) KFIELD = IFIELDP
-      CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+      CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     END IF
   END IF
 END IF
@@ -1539,13 +1540,13 @@ IF (IRESP==0) THEN
       END IF
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
     IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD)
     !
-    CALL MPI_BCAST(OFIELD,1,MPI_LOGICAL,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(OFIELD,1,MNHLOG_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
   END IF
 END IF
 !
@@ -1614,13 +1615,13 @@ IF (IRESP==0) THEN
       END IF
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
     IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD)
     !
-    CALL MPI_BCAST(OFIELD,SIZE(OFIELD),MPI_LOGICAL,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(OFIELD,SIZE(OFIELD),MNHLOG_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
   END IF
 END IF
 !
@@ -1689,7 +1690,7 @@ IF (IRESP==0) THEN
       END IF
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -1768,14 +1769,14 @@ IF (IRESP==0) THEN
       ITDATE(3) = TPDATA%TDATE%DAY
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
     IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD)
     !
-    CALL MPI_BCAST(ITDATE,     3,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
-    CALL MPI_BCAST(TPDATA%TIME,1,MNHREAL_MPI,  TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST( ITDATE,      3, MNHINT_MPI,  TPFILE%NMASTER_RANK-1, TPFILE%NMPICOMM, IERR )
+    CALL MPI_BCAST( TPDATA%TIME, 1, MNHREAL_MPI, TPFILE%NMASTER_RANK-1, TPFILE%NMPICOMM, IERR )
     TPDATA%TDATE%YEAR  = ITDATE(1)
     TPDATA%TDATE%MONTH = ITDATE(2)
     TPDATA%TDATE%DAY   = ITDATE(3)
@@ -1935,7 +1936,7 @@ IF (IRESP==0) THEN
       TIMEZ%T_READLB_READ=TIMEZ%T_READLB_READ + T1 - T0
     END IF
     !
-    CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
diff --git a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
index 460962753e1ae4d0c34b386e4b2ec7171c896fe1..a07d0ce2278d157104e1ce9be7e923a48f896125 100644
--- a/src/LIB/SURCOUCHE/src/mode_mppdb.f90
+++ b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
@@ -20,6 +20,7 @@ MODULE MODE_MPPDB
 !  Philippe Wautelet: 22/01/2019: use standard FLUSH statement instead of non standard intrinsics
 !  Philippe Wautelet: 22/01/2019: use sleep_c subroutine instead of non-standard call system
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !-----------------------------------------------------------------
 !
   use ISO_FORTRAN_ENV, only: OUTPUT_UNIT
@@ -299,7 +300,8 @@ MODULE MODE_MPPDB
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   SUBROUTINE MPPDB_CHECK1D_INT(KTAB,MESSAGE)
     !
-    USE MODD_MPIF,   ONLY: MPI_CHARACTER, MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX
+    USE MODD_MPIF,      ONLY: MPI_CHARACTER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX
+    use modd_precision, only: MNHINT_MPI
     !
     USE MODE_DEVICE
     !
@@ -327,7 +329,7 @@ MODULE MODE_MPPDB
 #else
     IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN
     !get the global size of KTAB
-    CALL MPI_ALLREDUCE(SIZE(KTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
+    CALL MPI_ALLREDUCE(SIZE(KTAB), IGLBSIZEPTAB, 1, MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
     IF ( IGLBSIZEPTAB == 0 ) RETURN
     !
     CALL MPPDB_BARRIER()
@@ -353,7 +355,7 @@ MODULE MODE_MPPDB
     !
     NPAS = 1
     IF (G_KTAB_ON_DEVICE) NPAS=2
-    CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MPI_INTEGER,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll)
+    CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MNHINT_MPI,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll)
     !
     IF (NPAS_ll>NMAXPAS) THEN
       NPAS_ll = NMAXPAS
@@ -366,11 +368,11 @@ MODULE MODE_MPPDB
       IF(MPPDB_FATHER_WORLD) THEN
         IF (MPPDB_IRANK_WORLD.EQ.0) THEN
           I_FIRST_SON = MPPDB_NBPROC_WORLD
-          CALL MPI_SENDRECV(SIZE(ITAB),1,MPI_INTEGER,I_FIRST_SON,NTAG, &
-                            ISIZEOTHER ,1,MPI_INTEGER,I_FIRST_SON,NTAG, &
+          CALL MPI_SENDRECV(SIZE(ITAB), 1,MNHINT_MPI,I_FIRST_SON,NTAG, &
+                            ISIZEOTHER ,1,MNHINT_MPI,I_FIRST_SON,NTAG, &
                             MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll)
           IF (SIZE(ITAB)==ISIZEOTHER) THEN
-            CALL MPI_RECV(ITAB_SON,SIZE(ITAB_SON),MPI_INTEGER,I_FIRST_SON, &
+            CALL MPI_RECV(ITAB_SON,SIZE(ITAB_SON),MNHINT_MPI,I_FIRST_SON, &
                     NTAG,MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll)
             INUMDIFF(IPAS) = COUNT( ITAB(:)/=ITAB_SON(:) )
             IF ( INUMDIFF(IPAS)>0 ) THEN
@@ -382,11 +384,11 @@ MODULE MODE_MPPDB
         END IF
       ELSE
         I_FIRST_FATHER = 0
-        CALL MPI_SENDRECV(SIZE(ITAB),1,MPI_INTEGER,I_FIRST_FATHER,NTAG, &
-                          ISIZEOTHER,1,MPI_INTEGER,I_FIRST_FATHER,NTAG, &
+        CALL MPI_SENDRECV(SIZE(ITAB),1,MNHINT_MPI,I_FIRST_FATHER,NTAG, &
+                          ISIZEOTHER,1,MNHINT_MPI,I_FIRST_FATHER,NTAG, &
                           MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll)
         IF (SIZE(ITAB)==ISIZEOTHER) THEN
-          CALL MPI_SEND(ITAB,SIZE(ITAB),MPI_INTEGER,I_FIRST_FATHER, &
+          CALL MPI_SEND(ITAB,SIZE(ITAB),MNHINT_MPI,I_FIRST_FATHER, &
                         NTAG, MPPDB_INTRA_COMM, IINFO_ll)
         END IF
       END IF
@@ -475,7 +477,8 @@ MODULE MODE_MPPDB
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   SUBROUTINE MPPDB_CHECK1D_LOG(OTAB,MESSAGE)
     !
-    USE MODD_MPIF,   ONLY: MPI_CHARACTER, MPI_INTEGER, MPI_LOGICAL, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX
+    USE MODD_MPIF,      ONLY: MPI_CHARACTER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX
+    use modd_precision, only: MNHINT_MPI, MNHLOG_MPI
     !
     USE MODE_DEVICE
     !
@@ -503,7 +506,7 @@ MODULE MODE_MPPDB
 #else
     IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN
     !get the global size of OTAB
-    CALL MPI_ALLREDUCE(SIZE(OTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
+    CALL MPI_ALLREDUCE(SIZE(OTAB), IGLBSIZEPTAB, 1, MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
     IF ( IGLBSIZEPTAB == 0 ) RETURN
     !
     CALL MPPDB_BARRIER()
@@ -529,7 +532,7 @@ MODULE MODE_MPPDB
     !
     NPAS = 1
     IF (G_OTAB_ON_DEVICE) NPAS=2
-    CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MPI_INTEGER,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll)
+    CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MNHINT_MPI,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll)
     !
     IF (NPAS_ll>NMAXPAS) THEN
       NPAS_ll = NMAXPAS
@@ -542,11 +545,11 @@ MODULE MODE_MPPDB
       IF(MPPDB_FATHER_WORLD) THEN
         IF (MPPDB_IRANK_WORLD.EQ.0) THEN
           I_FIRST_SON = MPPDB_NBPROC_WORLD
-          CALL MPI_SENDRECV(SIZE(GTAB),1,MPI_INTEGER,I_FIRST_SON,NTAG, &
-                            ISIZEOTHER ,1,MPI_INTEGER,I_FIRST_SON,NTAG, &
+          CALL MPI_SENDRECV(SIZE(GTAB),1,MNHINT_MPI,I_FIRST_SON,NTAG, &
+                            ISIZEOTHER,1,MNHINT_MPI,I_FIRST_SON,NTAG, &
                             MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll)
           IF (SIZE(GTAB)==ISIZEOTHER) THEN
-            CALL MPI_RECV(GTAB_SON,SIZE(GTAB_SON),MPI_LOGICAL,I_FIRST_SON, &
+            CALL MPI_RECV(GTAB_SON,SIZE(GTAB_SON),MNHLOG_MPI,I_FIRST_SON, &
                     NTAG,MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll)
             INUMDIFF(IPAS) = COUNT( GTAB(:).NEQV.GTAB_SON(:) )
             IF ( INUMDIFF(IPAS)>0 ) THEN
@@ -558,11 +561,11 @@ MODULE MODE_MPPDB
         END IF
       ELSE
         I_FIRST_FATHER = 0
-        CALL MPI_SENDRECV(SIZE(GTAB),1,MPI_INTEGER,I_FIRST_FATHER,NTAG, &
-                          ISIZEOTHER,1,MPI_INTEGER,I_FIRST_FATHER,NTAG, &
+        CALL MPI_SENDRECV(SIZE(GTAB),1,MNHINT_MPI,I_FIRST_FATHER,NTAG, &
+                          ISIZEOTHER,1,MNHINT_MPI,I_FIRST_FATHER,NTAG, &
                           MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll)
         IF (SIZE(GTAB)==ISIZEOTHER) THEN
-          CALL MPI_SEND(GTAB,SIZE(GTAB),MPI_LOGICAL,I_FIRST_FATHER, &
+          CALL MPI_SEND(GTAB,SIZE(GTAB),MNHLOG_MPI,I_FIRST_FATHER, &
                         NTAG, MPPDB_INTRA_COMM, IINFO_ll)
         END IF
       END IF
@@ -651,8 +654,8 @@ MODULE MODE_MPPDB
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   SUBROUTINE MPPDB_CHECK1D_REAL(PTAB,MESSAGE,PPRECISION)
     !
-    USE MODD_MPIF,      ONLY: MPI_CHARACTER, MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX
-    use modd_precision, only: MNHREAL_MPI
+    USE MODD_MPIF,      ONLY: MPI_CHARACTER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX
+    use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
     !
     USE MODE_DEVICE
     !
@@ -690,7 +693,7 @@ MODULE MODE_MPPDB
     END IF
     !
     !get the global size of PTAB
-    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
+    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
     IF ( IGLBSIZEPTAB == 0 ) RETURN
     !
     CALL MPPDB_BARRIER()
@@ -716,7 +719,7 @@ MODULE MODE_MPPDB
     !
     NPAS = 1
     IF (G_PTAB_ON_DEVICE) NPAS=2
-    CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MPI_INTEGER,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll)
+    CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MNHINT_MPI,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll)
     !
     IF (NPAS_ll>NMAXPAS) THEN
       NPAS_ll = NMAXPAS
@@ -731,8 +734,8 @@ MODULE MODE_MPPDB
       IF(MPPDB_FATHER_WORLD) THEN
         IF (MPPDB_IRANK_WORLD.EQ.0) THEN
           I_FIRST_SON = MPPDB_NBPROC_WORLD
-          CALL MPI_SENDRECV(SIZE(ZTAB),1,MPI_INTEGER,I_FIRST_SON,NTAG, &
-                            ISIZEOTHER ,1,MPI_INTEGER,I_FIRST_SON,NTAG, &
+          CALL MPI_SENDRECV(SIZE(ZTAB),1,MNHINT_MPI,I_FIRST_SON,NTAG, &
+                            ISIZEOTHER,1,MNHINT_MPI,I_FIRST_SON,NTAG, &
                             MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll)
           IF (SIZE(ZTAB)==ISIZEOTHER) THEN
             CALL MPI_RECV(ZTAB_SON,SIZE(ZTAB_SON),MNHREAL_MPI,I_FIRST_SON, &
@@ -755,8 +758,8 @@ MODULE MODE_MPPDB
         END IF
       ELSE
         I_FIRST_FATHER = 0
-        CALL MPI_SENDRECV(SIZE(ZTAB),1,MPI_INTEGER,I_FIRST_FATHER,NTAG, &
-                          ISIZEOTHER,1,MPI_INTEGER,I_FIRST_FATHER,NTAG, &
+        CALL MPI_SENDRECV(SIZE(ZTAB),1,MNHINT_MPI,I_FIRST_FATHER,NTAG, &
+                          ISIZEOTHER,1,MNHINT_MPI,I_FIRST_FATHER,NTAG, &
                           MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll)
         IF (SIZE(ZTAB)==ISIZEOTHER) THEN
           CALL MPI_SEND(ZTAB,SIZE(ZTAB),MNHREAL_MPI,I_FIRST_FATHER, &
@@ -850,7 +853,8 @@ MODULE MODE_MPPDB
   SUBROUTINE MPPDB_CHECK3D_LOG(OTAB,MESSAGE)
     !
     USE MODD_PARAMETERS_ll, ONLY: JPHEXT
-    USE MODD_MPIF,          ONLY: MPI_CHARACTER, MPI_INTEGER, MPI_LOGICAL, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX
+    USE MODD_MPIF,          ONLY: MPI_CHARACTER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX
+    use modd_precision,     only: MNHINT_MPI, MNHLOG_MPI
     !
     USE MODE_DEVICE
     USE MODE_GATHER_ll
@@ -888,7 +892,7 @@ MODULE MODE_MPPDB
 #else
     IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN
     !get the global size of OTAB
-    CALL MPI_ALLREDUCE(SIZE(OTAB), IGLBSIZEOTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
+    CALL MPI_ALLREDUCE(SIZE(OTAB), IGLBSIZEOTAB, 1, MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
     IF ( IGLBSIZEOTAB == 0 ) RETURN
     !
     CALL CHECK_ISXYSIZE(SIZE(OTAB,1),SIZE(OTAB,2),GISXYSIZE_GLOB)
@@ -916,7 +920,7 @@ MODULE MODE_MPPDB
     !
     NPAS = 1
     IF (G_OTAB_ON_DEVICE) NPAS=2
-    CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MPI_INTEGER,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll)
+    CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MNHINT_MPI,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll)
     !
     IF (NPAS_ll>NMAXPAS) THEN
       NPAS_ll = NMAXPAS
@@ -950,7 +954,7 @@ MODULE MODE_MPPDB
           !
           ! receive JPHEXT from son if different
           !
-          CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, &
+          CALL MPI_RECV(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_SON, &
                         NTAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll)
           !
           IIU_SON_ll = IIMAX_ll+2*IHEXT_SON_ll
@@ -959,7 +963,7 @@ MODULE MODE_MPPDB
           !
           IF (.NOT. ALLOCATED(TAB_SON_ll)) ALLOCATE(TAB_SON_ll(IIU_SON_ll,IJU_SON_ll,IKU_SON_ll))
           !
-          CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MPI_LOGICAL,I_FIRST_SON, &
+          CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MNHLOG_MPI,I_FIRST_SON, &
                         NTAG,MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll)
           !
           TAB_ll = TAB_ll.NEQV.TAB_SON_ll
@@ -1030,10 +1034,10 @@ MODULE MODE_MPPDB
           !
           I_FIRST_FATHER = 0
           IHEXT_SON_ll = JPHEXT
-          CALL MPI_SEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, &
+          CALL MPI_SEND(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_FATHER, &
                         NTAG, MPPDB_INTRA_COMM, IINFO_ll)
           !
-          CALL MPI_SEND(TAB_ll,SIZE(TAB_ll),MPI_LOGICAL,I_FIRST_FATHER, &
+          CALL MPI_SEND(TAB_ll,SIZE(TAB_ll),MNHLOG_MPI,I_FIRST_FATHER, &
                         NTAG, MPPDB_INTRA_COMM, IINFO_ll)
         END IF
       END IF
@@ -1120,9 +1124,9 @@ MODULE MODE_MPPDB
 
   SUBROUTINE MPPDB_CHECK3D_REAL(PTAB,MESSAGE,PPRECISION)
     !
-    USE MODD_MPIF,          ONLY: MPI_CHARACTER, MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX
+    USE MODD_MPIF,          ONLY: MPI_CHARACTER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX
     USE MODD_PARAMETERS_ll, ONLY: JPHEXT
-    use modd_precision,     only: MNHREAL_MPI
+    use modd_precision,     only: MNHINT_MPI, MNHREAL_MPI
     !
     USE MODE_DEVICE
     USE MODE_GATHER_ll
@@ -1168,7 +1172,7 @@ MODULE MODE_MPPDB
     END IF
     !
     !get the global size of PTAB
-    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
+    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1, MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
     IF ( IGLBSIZEPTAB == 0 ) RETURN
     !
     CALL CHECK_ISXYSIZE(SIZE(PTAB,1),SIZE(PTAB,2),GISXYSIZE_GLOB)
@@ -1196,7 +1200,7 @@ MODULE MODE_MPPDB
 
     NPAS = 1
     IF (G_PTAB_ON_DEVICE) NPAS=2
-    CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MPI_INTEGER,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll)
+    CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MNHINT_MPI,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll)
 
     MAX_DIFF(:) = 0.0
 
@@ -1230,7 +1234,7 @@ MODULE MODE_MPPDB
              !
              ! receive JPHEXT from son if different
              !
-             CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, &
+             CALL MPI_RECV(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_SON, &
                   NTAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll)
 
              !IHEXT_SON_ll = JPHEXT
@@ -1317,7 +1321,7 @@ MODULE MODE_MPPDB
              !
              I_FIRST_FATHER = 0
              IHEXT_SON_ll = JPHEXT
-             CALL MPI_BSEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, &
+             CALL MPI_BSEND(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_FATHER, &
                   NTAG, MPPDB_INTRA_COMM, IINFO_ll)
 
              CALL MPI_BSEND(TAB_ll,SIZE(TAB_ll),MNHREAL_MPI,I_FIRST_FATHER, &
@@ -1437,9 +1441,9 @@ MODULE MODE_MPPDB
 
   SUBROUTINE MPPDB_CHECK2D_REAL(PTAB,MESSAGE,PPRECISION)
     !
-    USE MODD_MPIF,          ONLY: MPI_CHARACTER, MPI_INTEGER, MPI_LOGICAL, MPI_STATUS_IGNORE, MPI_LAND, MPI_SUM, MPI_MAX
+    USE MODD_MPIF,          ONLY: MPI_CHARACTER, MPI_STATUS_IGNORE, MPI_LAND, MPI_SUM, MPI_MAX
     USE MODD_PARAMETERS_ll, ONLY: JPHEXT
-    use modd_precision,     only: MNHREAL_MPI
+    use modd_precision,     only: MNHINT_MPI, MNHREAL_MPI
     !
     USE MODE_DEVICE
     USE MODE_GATHER_ll
@@ -1487,7 +1491,7 @@ MODULE MODE_MPPDB
     END IF
     !
     !get the global size of PTAB
-    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
+    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
     IF ( IGLBSIZEPTAB == 0 ) RETURN
     !
     CALL CHECK_ISXYSIZE(SIZE(PTAB,1),SIZE(PTAB,2),GISXYSIZE_GLOB)
@@ -1516,7 +1520,7 @@ MODULE MODE_MPPDB
 
     NPAS = 1
     IF (G_PTAB_ON_DEVICE) NPAS=2
-    CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MPI_INTEGER,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll)
+    CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MNHINT_MPI,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll)
 
     MAX_DIFF(:) = 0.0
 
@@ -1561,7 +1565,7 @@ MODULE MODE_MPPDB
              ! receive JPHEXT from son if different
              !
              IF (GISXYSIZE_GLOB) THEN
-              CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, &
+              CALL MPI_RECV(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_SON, &
                     NTAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll)
 
                 !IHEXT_SON_ll = JPHEXT
@@ -1668,7 +1672,7 @@ MODULE MODE_MPPDB
              I_FIRST_FATHER = 0
              IF (GISXYSIZE_GLOB) THEN
               IHEXT_SON_ll = JPHEXT
-               CALL MPI_BSEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, &
+               CALL MPI_BSEND(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_FATHER, &
                     NTAG, MPPDB_INTRA_COMM, IINFO_ll)
              END IF
 
@@ -1753,10 +1757,10 @@ MODULE MODE_MPPDB
   SUBROUTINE MPPDB_CHECKLB(PLB,MESSAGE,PPRECISION,HLBTYPE,KRIM)
 
     USE MODD_IO,            ONLY: GSMONOPROC, ISP, ISNPROC, L2D, LPACK
-    USE MODD_MPIF,          ONLY: MPI_INTEGER, MPI_STATUS_IGNORE
+    USE MODD_MPIF,          ONLY: MPI_STATUS_IGNORE
     USE MODD_PARAMETERS_ll, ONLY: JPHEXT
     USE MODD_VAR_ll,        ONLY: NMNH_COMM_WORLD
-    use modd_precision,     only: MNHREAL_MPI
+    use modd_precision,     only: MNHINT_MPI, MNHREAL_MPI
 
     USE MODE_DISTRIB_LB
     USE MODE_TOOLS_ll,      ONLY: GET_GLOBALDIMS_ll
@@ -1852,7 +1856,7 @@ MODULE MODE_MPPDB
           !
           ! receive JPHEXT from son if different
           !
-          CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, &
+          CALL MPI_RECV(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_SON, &
                NTAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll)
 
           IIU_SON_ll = IIMAX_ll+2*IHEXT_SON_ll
@@ -1918,7 +1922,7 @@ MODULE MODE_MPPDB
           !
           I_FIRST_FATHER = 0
           IHEXT_SON_ll = JPHEXT
-          CALL MPI_BSEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, &
+          CALL MPI_BSEND(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_FATHER, &
                NTAG, MPPDB_INTRA_COMM, IINFO_ll)
           CALL MPI_BSEND(PLB,SIZE(PLB),MNHREAL_MPI,I_FIRST_FATHER, &
                NTAG, MPPDB_INTRA_COMM, IINFO_ll)
@@ -2036,8 +2040,9 @@ MODULE MODE_MPPDB
     USE MODI_GET_SURF_MASK_n
     USE MODD_IO_SURF_MNH, ONLY : NHALO
     USE MODD_CONFZ     , ONLY : MPI_BUFFER_SIZE
-    USE MODD_MPIF      , ONLY : MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM
+    USE MODD_MPIF      , ONLY : MPI_STATUS_IGNORE, MPI_SUM
     USE MODD_MNH_SURFEX_n
+    use modd_precision,   only: MNHINT_MPI
 !
     IMPLICIT NONE
 !
@@ -2064,7 +2069,7 @@ MODULE MODE_MPPDB
     INTEGER                              :: IINFO_ll
     !
     IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN
-    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTRA_COMM, IINFO_ll)
+    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MNHINT_MPI, MPI_SUM, MPPDB_INTRA_COMM, IINFO_ll)
     IF ( IGLBSIZEPTAB == 0 ) RETURN
     !
     IF ( SIZE(PTAB) == 0 ) THEN   !if the local size of the field is 0, we need to define ZFIELD3D filled with default value 1e20
@@ -2170,7 +2175,8 @@ MODULE MODE_MPPDB
   !
   SUBROUTINE CHECK_ISXYSIZE(KX,KY,OISXYSIZE_GLOB)
     !
-    USE MODD_MPIF,          ONLY: MPI_LOGICAL, MPI_LAND
+    USE MODD_MPIF,          ONLY: MPI_LAND
+    use modd_precision,     only: MNHLOG_MPI
     !
     IMPLICIT NONE
     !
@@ -2188,7 +2194,7 @@ MODULE MODE_MPPDB
       GISXYSIZE = .FALSE.
     END IF
     !
-    CALL MPI_ALLREDUCE(GISXYSIZE,OISXYSIZE_GLOB,1,MPI_LOGICAL,MPI_LAND,MPPDB_INTER_COMM,IINFO_ll)
+    CALL MPI_ALLREDUCE(GISXYSIZE,OISXYSIZE_GLOB,1,MNHLOG_MPI,MPI_LAND,MPPDB_INTER_COMM,IINFO_ll)
     !
   END SUBROUTINE CHECK_ISXYSIZE
   !
diff --git a/src/LIB/SURCOUCHE/src/mode_scatter.f90 b/src/LIB/SURCOUCHE/src/mode_scatter.f90
index 12518db8bd6a1bd8222d637aee2de2264bf163a3..f16f8f6145411a02a68b86cfa0947bf777adbd92 100644
--- a/src/LIB/SURCOUCHE/src/mode_scatter.f90
+++ b/src/LIB/SURCOUCHE/src/mode_scatter.f90
@@ -3,16 +3,15 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
+! Modifications:
+!  J. Escobar  10/02/2012: bug in MPI_RECV: replace MPI_STATUSES_IGNORE with MPI_STATUS_IGNORE
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!-----------------------------------------------------------------
 
 MODULE MODE_SCATTER_ll
 
-!
-!   J.Escobar 10/02/2012 : Bug , in MPI_RECV replace MPI_STATUSES_IGNORE
-!                          with MPI_STATUS_IGNORE
-!
-
 USE MODD_MPIF
-use modd_precision, only: MNHREAL_MPI
+use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
 
 IMPLICIT NONE 
 
@@ -322,14 +321,14 @@ IF (ISP == KROOT) THEN
     END IF
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TI2DP,SIZE(TI2DP),MPI_INTEGER,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TI2DP,SIZE(TI2DP),MNHINT_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       KRECV(:) = TI2DP(:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(KRECV,SIZE(KRECV),MPI_INTEGER,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(KRECV,SIZE(KRECV),MNHINT_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
   
@@ -359,14 +358,14 @@ IF (ISP == KROOT) THEN
     END IF
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TI2DP,SIZE(TI2DP),MPI_INTEGER,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TI2DP,SIZE(TI2DP),MNHINT_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       KRECV(:,:) = TI2DP(:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(KRECV,SIZE(KRECV),MPI_INTEGER,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(KRECV,SIZE(KRECV),MNHINT_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
 
@@ -572,14 +571,14 @@ IF (ISP == KROOT) THEN
     TI3DP=>KSEND(IXO:IXE,IYO:IYE)
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TI3DP,SIZE(TI3DP),MPI_INTEGER,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TI3DP,SIZE(TI3DP),MNHINT_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       KRECV(:,:) = TI3DP(:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(KRECV,SIZE(KRECV),MPI_INTEGER,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(KRECV,SIZE(KRECV),MNHINT_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
 
diff --git a/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 b/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90
index 23638d194e3273217719c90a1de448a05a7ec9e0..77d08c6866ce897efa35164f450f5b2ed04e74b3 100644
--- a/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90
@@ -3,6 +3,9 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!-----------------------------------------------------------------
 
 !     ###################
       MODULE MODE_SUM2_ll
@@ -581,7 +584,7 @@ ENDIF
 !
 !*       0.    DECLARATIONS
 !
-  use modd_precision, only: MNH2REAL_MPI
+  use modd_precision, only: MNH2REAL_MPI, MNHINT_MPI
   USE MODD_VAR_ll,    ONLY: IP
 !
   IMPLICIT NONE
@@ -627,7 +630,7 @@ ENDIF
   IPROCMAX = ZBUFOUT(2)
   IMAXLOC = KLOCALMAX
   ISIZE=SIZE(KLOCALMAX)
-  CALL MPI_BCAST(IMAXLOC, ISIZE, MPI_INTEGER, IPROCMAX-1, &
+  CALL MPI_BCAST(IMAXLOC, ISIZE, MNHINT_MPI, IPROCMAX-1, &
                  NMNH_COMM_WORLD, INFO_ll)
 !
   KPROC=IPROCMAX
@@ -680,7 +683,7 @@ ENDIF
 !
 !*       0.    DECLARATIONS
 !
-  use modd_precision,    only: MNH2REAL_MPI
+  use modd_precision,    only: MNH2REAL_MPI, MNHINT_MPI
   USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll
   USE MODD_VAR_ll,       ONLY: IP, TCRRT_PROCONF
 !
@@ -732,7 +735,7 @@ ENDIF
 !
   IPROCMAX = ZBUFOUT(2)
   IMAXLOC = KLOCALMAX
-  CALL MPI_BCAST(IMAXLOC, ISIZE, MPI_INTEGER, IPROCMAX-1, &
+  CALL MPI_BCAST(IMAXLOC, ISIZE, MNHINT_MPI, IPROCMAX-1, &
                  NMNH_COMM_WORLD, INFO_ll)
 !
 !-------------------------------------------------------------------------------
diff --git a/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 b/src/LIB/SURCOUCHE/src/mode_sum_ll.f90
index ab948ab80cc8311b44593bde0ce70afcce6fedf4..6e9bfb3a5ec5955fb2e00360209d53ab23be3e4f 100644
--- a/src/LIB/SURCOUCHE/src/mode_sum_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_sum_ll.f90
@@ -3,8 +3,9 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!Correction :
-!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
+! Modifications:
+!  J. Escobar  15/09/2015: WENO5 & JPHEXT <> 1
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !-----------------------------------------------------------------
 
 !     ##################
@@ -57,7 +58,7 @@
 !------------------------------------------------------------------------------
 !
    USE MODD_MPIF
-   use modd_precision, only: MNHREAL_MPI
+   use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
    USE MODD_VAR_ll,    ONLY: NMNH_COMM_WORLD
 !
   CONTAINS
@@ -1305,8 +1306,8 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll
 !
 !*        1.5  Get global begin and end
 !
-  CALL MPI_ALLREDUCE(IB, IGB, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IERR)
-  CALL MPI_ALLREDUCE(IE, IGE, 1, MPI_INTEGER, MPI_MAX, NMNH_COMM_WORLD, IERR)
+  CALL MPI_ALLREDUCE(IB, IGB, 1, MNHINT_MPI, MPI_MIN, NMNH_COMM_WORLD, IERR)
+  CALL MPI_ALLREDUCE(IE, IGE, 1, MNHINT_MPI, MPI_MAX, NMNH_COMM_WORLD, IERR)
 !
 !-------------------------------------------------------------------------------
 !
@@ -1316,10 +1317,10 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll
 !*        2.1  Have the sizes and global positions known by all procs
 !
   ISIZE = IE - IB + 1
-  CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, &
+  CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, &
                      NMNH_COMM_WORLD, IERR)
 !
-  CALL MPI_ALLGATHER( (/ IB-IGB /), 1, MPI_INTEGER, IDISPL, 1, MPI_INTEGER, &
+  CALL MPI_ALLGATHER( (/ IB-IGB /), 1, MNHINT_MPI, IDISPL, 1, MNHINT_MPI, &
                      NMNH_COMM_WORLD, IERR)
 ! 
 !*        2.2  Get the global field
@@ -2829,7 +2830,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll
 !*       1. CALL THE MPI_ALLREDUCE ROUTINE
 !           ------------------------------
 !
-  CALL MPI_ALLREDUCE(PRES, ZRES, 1, MPI_INTEGER, &
+  CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNHINT_MPI, &
                      MPI_SUM, NMNH_COMM_WORLD, KINFO)
 !
   PRES = ZRES
@@ -2892,7 +2893,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll
 !*       1. CALL THE MPI_ALLREDUCE ROUTINE
 !           ------------------------------
 !
-  CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MPI_INTEGER, &
+  CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MNHINT_MPI, &
                      MPI_SUM, NMNH_COMM_WORLD, KINFO)
 !
   PRES = ZRES
@@ -2959,7 +2960,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll
 !
   IDIM = SIZE(PRES,1) * SIZE(PRES,2)
 !
-  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MPI_INTEGER, MPI_SUM, &
+  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, &
                      NMNH_COMM_WORLD, KINFO)
 !
   PRES = ZRES
@@ -3027,7 +3028,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll
 !
   IDIM = SIZE(PRES,1) * SIZE(PRES,2) * SIZE(PRES,3)
 !
-  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MPI_INTEGER, MPI_SUM, &
+  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, &
                      NMNH_COMM_WORLD, KINFO)
 !
   PRES = ZRES
diff --git a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90
index 2626c5dc320d42fff1c13d1c1e50ede919782de8..8378386e1c732809ab0d9849611e476bbed47304 100644
--- a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90
@@ -6,6 +6,7 @@
 ! Modifications:
 !  J. Escobar  15/09/2015: WENO5 & JPHEXT <> 1
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !-----------------------------------------------------------------
 
 !     ####################
@@ -47,7 +48,7 @@
 !     J. Escobar  27/06/2011  correction for gridnesting with different SHAPE 
 ! 
   USE MODD_MPIF
-  use modd_precision, only: MNHREAL_MPI
+  use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
   USE MODD_STRUCTURE_ll
   !JUANZ
   USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
@@ -1274,8 +1275,8 @@ ENDIF
 !
 !*        2.3    Gather values of INUMPROC 
 !
-  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MPI_INTEGER, IGLOBALSLICEPROC, 1, &
-                     MPI_INTEGER, NMNH_COMM_WORLD, IERR)
+  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MNHINT_MPI, IGLOBALSLICEPROC, 1, &
+                     MNHINT_MPI, NMNH_COMM_WORLD, IERR)
 !
 !*        2.4     Get MPI world group
 !
@@ -1308,7 +1309,7 @@ ENDIF
 !
     ALLOCATE(ISIZES(ICOUNT))
     ISIZES = 0
-    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, &
+    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, &
                      ICOMM_GLOBALSLICE, IERR)
 !
 !*        3.2     Compute array of displacements in the slice relative to the 
@@ -1355,7 +1356,7 @@ ENDIF
 !
   IF (ICOMM .NE. MPI_COMM_NULL) THEN
 !
-    CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR)
+    CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MNHINT_MPI, IPROCS(1), ICOMM, IERR)
     CALL MPI_BCAST(PGLOBALSLICE(IDISPL1+1), IGLOBALSLICELENGTH, MNHREAL_MPI, &
                     IPROCS(1), ICOMM, IERR)
 !
@@ -1601,8 +1602,8 @@ ENDIF
 !
 !*        2.3    Gather values of INUMPROC
 !
-  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MPI_INTEGER, IGLOBALSLICEPROC, 1, &
-                     MPI_INTEGER, NMNH_COMM_WORLD, IERR)
+  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MNHINT_MPI, IGLOBALSLICEPROC, 1, &
+                     MNHINT_MPI, NMNH_COMM_WORLD, IERR)
 !
 !*        2.4     Get MPI world group
 !
@@ -1637,7 +1638,7 @@ ENDIF
 !
     ALLOCATE(ISIZES(ICOUNT))
     ISIZES = 0
-    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, &
+    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, &
                      ICOMM_GLOBALSLICE, IERR)
 !
 !*        3.2     Compute array of displacements in the slice relative to the
@@ -1689,7 +1690,7 @@ ENDIF
 !
   IF (ICOMM .NE. MPI_COMM_NULL) THEN
 !
-    CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR)
+    CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MNHINT_MPI, IPROCS(1), ICOMM, IERR)
     DO JK = 1, IGLOBALSLICEHEIGHT
       CALL MPI_BCAST(PGLOBALSLICE(1,JK), IGLOBALSLICELENGTH, MNHREAL_MPI, &
                     IPROCS(1), ICOMM, IERR)
@@ -1956,7 +1957,7 @@ ENDIF
 !
 !*        2.3    Gather values of INUMPROC 
 !
-  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MPI_INTEGER, ISLICEPROC, 1, MPI_INTEGER, &
+  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MNHINT_MPI, ISLICEPROC, 1, MNHINT_MPI, &
                      NMNH_COMM_WORLD, IERR)
 !
 !*        2.4     Get MPI world group
@@ -1990,7 +1991,7 @@ ENDIF
 !
     ALLOCATE(ISIZES(ICOUNT))
     ISIZES = 0
-    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, &
+    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, &
                      ICOMM_SLICE, IERR)
 !
 !*        3.2     Compute array of displacements in the slice relative to the 
@@ -2039,7 +2040,7 @@ ENDIF
 !
   IF (ICOMM .NE. MPI_COMM_NULL) THEN
 !
-    CALL MPI_BCAST(ISLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR)
+    CALL MPI_BCAST(ISLICELENGTH, 1, MNHINT_MPI, IPROCS(1), ICOMM, IERR)
     CALL MPI_BCAST(ITOTALSLICE, ISLICELENGTH, MNHREAL_MPI, &
                     IPROCS(1), ICOMM, IERR)
     CALL MPI_COMM_FREE(ICOMM, IERR)
@@ -2309,7 +2310,7 @@ ENDIF
 !
 !*        2.3    Gather values of INUMPROC
 !
-  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MPI_INTEGER, ISLICEPROC, 1, MPI_INTEGER, &
+  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MNHINT_MPI, ISLICEPROC, 1, MNHINT_MPI, &
                      NMNH_COMM_WORLD, IERR)
 !
 !*        2.4     Get MPI world group
@@ -2343,7 +2344,7 @@ ENDIF
 !
     ALLOCATE(ISIZES(ICOUNT))
     ISIZES = 0
-    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, &
+    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, &
                      ICOMM_SLICE, IERR)
 !
 !*        3.2     Compute array of displacements in the slice relative to the
@@ -2395,7 +2396,7 @@ ENDIF
 !
   IF (ICOMM .NE. MPI_COMM_NULL) THEN
 !
-    CALL MPI_BCAST(ISLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR)
+    CALL MPI_BCAST(ISLICELENGTH, 1, MNHINT_MPI, IPROCS(1), ICOMM, IERR)
     DO JK = 1, ISLICEHEIGHT
       CALL MPI_BCAST(ITOTALSLICE(1,JK), ISLICELENGTH, MNHREAL_MPI, &
                     IPROCS(1), ICOMM, IERR)
diff --git a/src/LIB/SURCOUCHE/src/update_nhalo1d.f90 b/src/LIB/SURCOUCHE/src/update_nhalo1d.f90
index a4ac0bcac29aa2115a31e0b7751e557c9c5da432..08781bb4ba2dacb067c16d41e3b5c94efcbf027a 100644
--- a/src/LIB/SURCOUCHE/src/update_nhalo1d.f90
+++ b/src/LIB/SURCOUCHE/src/update_nhalo1d.f90
@@ -1,4 +1,4 @@
-!SURFEX_LIC Copyright 1994-2014 Meteo-France 
+!SURFEX_LIC Copyright 2015-2019 Meteo-France
 !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C  licence
 !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SURFEX_LIC for details. version 1.
@@ -40,6 +40,7 @@
 !!        M.Moge    08/2015 calling ABORT if local subdomain is of size < NHALO
 !!                          (this causes problems on the boundary of the domain)
 !!        M.Moge    08/2015 bug fix : changing the computation of IISIZE
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
@@ -51,6 +52,7 @@ USE YOMHOOK,           ONLY: LHOOK, DR_HOOK
 !
 USE MODD_MPIF
 USE MODD_PARAMETERS,   ONLY: JPHEXT, JPVEXT
+use modd_precision,    only: MNHINT_MPI
 USE MODD_STRUCTURE_ll, ONLY: ZONE_ll, CRSPD_ll
 USE MODD_SURF_PAR,     ONLY: NUNDEF
 USE MODD_VAR_ll,       ONLY: NPROC, IP, YSPLITTING, NMNH_COMM_WORLD
@@ -174,10 +176,10 @@ DO JI = 1, NPROC
   IDISPLS( JI ) = JI-1
 ENDDO
 IRECVCOUNTS(:) = 1
-CALL MPI_ALLGATHERV( KXOR, 1, MPI_INTEGER, IXORARRAY_ALL, IRECVCOUNTS, IDISPLS, MPI_INTEGER, NMNH_COMM_WORLD, IINFO_ll)
-CALL MPI_ALLGATHERV( KXEND, 1, MPI_INTEGER, IXENDARRAY_ALL, IRECVCOUNTS, IDISPLS, MPI_INTEGER, NMNH_COMM_WORLD, IINFO_ll)
-CALL MPI_ALLGATHERV( KYOR, 1, MPI_INTEGER, IYORARRAY_ALL, IRECVCOUNTS, IDISPLS, MPI_INTEGER, NMNH_COMM_WORLD, IINFO_ll)
-CALL MPI_ALLGATHERV( KYEND, 1, MPI_INTEGER, IYENDARRAY_ALL, IRECVCOUNTS, IDISPLS, MPI_INTEGER, NMNH_COMM_WORLD, IINFO_ll)
+CALL MPI_ALLGATHERV( KXOR,  1, MNHINT_MPI, IXORARRAY_ALL,  IRECVCOUNTS, IDISPLS, MNHINT_MPI, NMNH_COMM_WORLD, IINFO_ll )
+CALL MPI_ALLGATHERV( KXEND, 1, MNHINT_MPI, IXENDARRAY_ALL, IRECVCOUNTS, IDISPLS, MNHINT_MPI, NMNH_COMM_WORLD, IINFO_ll )
+CALL MPI_ALLGATHERV( KYOR,  1, MNHINT_MPI, IYORARRAY_ALL,  IRECVCOUNTS, IDISPLS, MNHINT_MPI, NMNH_COMM_WORLD, IINFO_ll )
+CALL MPI_ALLGATHERV( KYEND, 1, MNHINT_MPI, IYENDARRAY_ALL, IRECVCOUNTS, IDISPLS, MNHINT_MPI, NMNH_COMM_WORLD, IINFO_ll )
 !
 DO JI = 1, NPROC
   TZSPLITTING_PHYS(JI)%NUMBER = JI
diff --git a/src/MNH/aer_wet_dep_kmt_warm.f90 b/src/MNH/aer_wet_dep_kmt_warm.f90
index 9061ff769f9ef4fe75fdd6d4ca1949acde97e8af..450f34b47cf6f4e8b53db7187701f291bebf420c 100644
--- a/src/MNH/aer_wet_dep_kmt_warm.f90
+++ b/src/MNH/aer_wet_dep_kmt_warm.f90
@@ -1,7 +1,8 @@
-!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!ORILAM_LIC Copyright 2007-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
 !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !ORILAM_LIC for details.
+!-----------------------------------------------------------------
 !     ################################
       MODULE MODI_AER_WET_DEP_KMT_WARM
 !!    ################################
@@ -114,6 +115,7 @@ END MODULE MODI_AER_WET_DEP_KMT_WARM
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    09/05/07
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -539,7 +541,7 @@ INTEGER                           :: JKAQ     ! counter for acquous aerosols
 !-------------------------------------------------------------------------------
 !
 !*         Time splitting initialization
-ZTSPLITR = PTSTEP / FLOAT(KSPLITR)
+ZTSPLITR = PTSTEP / REAL(KSPLITR)
 !
 ZW(:,:,:)=0.
 ZRRS(:,:,:) = MAX(PRRS(:,:,:), 0.)
diff --git a/src/MNH/aerohb.f b/src/MNH/aerohb.f
index ce6dafd73bcb06390518c52612d31354361a1575..5174f8a04d6456effbd8cb611021295305bdcbd5 100644
--- a/src/MNH/aerohb.f
+++ b/src/MNH/aerohb.f
@@ -1,12 +1,10 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 aerosol 2006/05/18 13:07:25
+! Modifications:
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-----------------------------------------------------------------
       subroutine aeroeq(gas,caero,tempk,rh,ICOLUMN,err)
 C***********************************************************************
@@ -137,10 +135,10 @@ c Reserve the old aerosol concentrations
         enddo
       enddo
 c Calculate mass transport factor
-      delmu=(alog(Dpup)-alog(Dplow))/float(nasect)
+      delmu=(alog(Dpup)-alog(Dplow))/real(nasect)
       fact = 0.
       do inasect = 1, nasect
-        Dp=alog(Dplow)+(float(inasect)-0.5)*delmu
+        Dp=alog(Dplow)+(real(inasect)-0.5)*delmu
         Dp=exp(Dp)*1.e-6
         DPINDEX(INASECT) = dp
         totmass=0.
@@ -215,7 +213,7 @@ c moving sections to the fixed caero(i,j)
       enddo
 c        
       do inasect = 1, nasect
-        Dp=alog(Dplow)+(float(inasect)-0.5)*delmu
+        Dp=alog(Dplow)+(real(inasect)-0.5)*delmu
         Dp=exp(Dp)*1.e-6
          newvol = Dp**3 + 6./pi*dmass(inasect)/NN(inasect)*1.e-12/densp
          if(newvol .lt. 0.) newvol = 0.
@@ -225,9 +223,9 @@ c        write(6,*)icolumn,inasect,Dp*1.e6,Dp1
          Dp1 = max(Dp1, Dplow)
          Dpmove = (alog(Dp1) - alog(Dplow))/delmu + 0.5
          if(Dpmove .lt. 1.) Dpmove = 1.000001
-         if(Dpmove .gt. float(nasect)) Dpmove = float(nasect)+0.000001
+         if(Dpmove .gt. real(nasect)) Dpmove = real(nasect)+0.000001
          imove = int(Dpmove)
-         distr = Dpmove - float(imove)
+         distr = Dpmove - real(imove)
          do j = 1, naspec
            caero(imove,j)=caero(imove,j) + (1.-distr)*caero0(inasect,j)
            if(imove .ne. nasect) caero(imove+1,j) = caero(imove+1,j) 
diff --git a/src/MNH/aeroparam.f b/src/MNH/aeroparam.f
index b69cccc8fde3590c8795c5eb6cf416655c24e464..769c26d3c396ece84a9a57fb114b5c53469bcfca 100644
--- a/src/MNH/aeroparam.f
+++ b/src/MNH/aeroparam.f
@@ -1,12 +1,10 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 aerosol 2006/05/18 13:07:25
+! Modifications:
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-----------------------------------------------------------------
       subroutine aeroparam(tempE, iaero, Ustar, Kn, Sc, St, Vsett)
 C     This subroutine calculates the Knudson, Schmidt, and Stokes numbers
@@ -47,8 +45,8 @@ C        Ustar   : Friction velocity
       data KBolzm,grav/1.38e-23, 9.80/
       data alfa,beta,gama/1.257,0.40,-1.10/
          tempK = tempE + 273.15
-         delmu=(alog(Dpup)-alog(Dplow))/float(nasect)
-         Dp1=alog(Dplow)+(float(iaero)-1.0)*delmu
+         delmu=(alog(Dpup)-alog(Dplow))/real(nasect)
+         Dp1=alog(Dplow)+(real(iaero)-1.0)*delmu
          Dp2=Dp1+delmu
          Dp1=exp(Dp1)*1.e-6
          Dp2=exp(Dp2)*1.e-6
diff --git a/src/MNH/aerozon.f90 b/src/MNH/aerozon.f90
index 41989f6b5f98b04486338f0b416b1bf47ba2c313..190ff0298cf04f85457e0617205156d8fd0ed9c8 100644
--- a/src/MNH/aerozon.f90
+++ b/src/MNH/aerozon.f90
@@ -139,6 +139,7 @@ END MODULE MODI_AEROZON
 !!    -------------
 !!      (P.Peyrille) 20/07/04 : add LFIX_DAT to have perpetual day
 !!      J.Escobar 30/03/2017  : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -273,18 +274,18 @@ END DO
 !
 IF ( LFIX_DAT ) THEN 
   IF( MOD(TPDTEXP%TDATE%YEAR,4).EQ.0 ) THEN
-    ZDATE = FLOAT(TPDTEXP%TDATE%DAY +   IBIS(TPDTEXP%TDATE%MONTH-1)) - 1
+    ZDATE = REAL(TPDTEXP%TDATE%DAY +   IBIS(TPDTEXP%TDATE%MONTH-1)) - 1
     ZAD = 2.0*XPI*ZDATE/366.0
   ELSE
-    ZDATE = FLOAT(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1
+    ZDATE = REAL(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1
     ZAD = 2.0*XPI*ZDATE/365.0
   END IF
 ELSE
   IF( MOD(TPDTCUR%TDATE%YEAR,4).EQ.0 ) THEN
-    ZDATE = FLOAT(TPDTCUR%TDATE%DAY +   IBIS(TPDTCUR%TDATE%MONTH-1)) - 1
+    ZDATE = REAL(TPDTCUR%TDATE%DAY +   IBIS(TPDTCUR%TDATE%MONTH-1)) - 1
     ZAD = 2.0*XPI*ZDATE/366.0
   ELSE
-    ZDATE = FLOAT(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1
+    ZDATE = REAL(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1
     ZAD = 2.0*XPI*ZDATE/365.0
   END IF
 END IF 
diff --git a/src/MNH/ares.f b/src/MNH/ares.f
index 369f93348e863454dc4e20a63c5318914ab2fa8d..3fd41e2b9bac4782d0b53f6df1eb606206cf6c31 100644
--- a/src/MNH/ares.f
+++ b/src/MNH/ares.f
@@ -3,6 +3,9 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!-----------------------------------------------------------------
 c/////////////////////////////////////////////////////////////////////////////
             
 C    Calculate the aerosol chemical speciation and water content.
@@ -1246,7 +1249,7 @@ c *** check range of per cent relative humidity
        irh = irhx
        irh = max(1,irh)
        irh = min(irh,100)
-       aw  = float(irh) / 100.0 ! water activity = fractional relative humidity
+       aw  = real(irh) / 100.0 ! water activity = fractional relative humidity
        tso4 = max( mso4 , 0.0 )
        tnh4 = max( mnh4 , 0.0 )
        tno3 = max( mno3 , 0.0 )
diff --git a/src/MNH/bhmie.f90 b/src/MNH/bhmie.f90
index 8aeb78f034168f8f402e5f1edb9e4c9f96cd92d6..fc482f80239e2cee355f772ed3f6790c145a3de9 100644
--- a/src/MNH/bhmie.f90
+++ b/src/MNH/bhmie.f90
@@ -2,6 +2,7 @@
 !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 MODI_BHMIE
 !      #################
@@ -65,6 +66,7 @@ END MODULE MODI_BHMIE
 !! 93/06/01 (BTD): Changed AMAX1 to generic function MAX
 !  P. Wautelet 22/01/2019: correct kind of complex datatype
 !  P. Wautelet 22/02/2019: add kind parameter for CMPLX intrinsics (if not it default to single precision)
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!***********************************************************************
 !
 !*       0.    DECLARATIONS
@@ -118,9 +120,9 @@ ISTOP = INT(ZSIZE_PARAM_STOP)
 !
 ALLOCATE(ZTAU(KNANG))
 ALLOCATE(ZAMU(KNANG))
-ZDELTA_ANGLE = 0.5*XPI/FLOAT(KNANG-1)
+ZDELTA_ANGLE = 0.5*XPI/REAL(KNANG-1)
 DO J = 1,KNANG
-  ZAMU(J) = COS( ZDELTA_ANGLE*FLOAT(J-1) )
+  ZAMU(J) = COS( ZDELTA_ANGLE*REAL(J-1) )
 ENDDO
 !
 ALLOCATE(ZPI(KNANG))
@@ -141,7 +143,7 @@ ZZD(INMX) = (0.,0.)
 !
 DO J = 1,INMX-1
   IEN = INMX-J+1
-  ZZEN = FLOAT(IEN)/ZZY
+  ZZEN = REAL(IEN)/ZZY
   ZZD(INMX-J) = ZZEN-(1.0/(ZZD(IEN)+ZZEN))
 ENDDO
 !
@@ -158,7 +160,7 @@ ZONE = -1.
 ZZAN1 = CMPLX(0.0d0,0.0d0,kind=kind(ZZAN1))
 ZZBN1 = CMPLX(0.0d0,0.0d0,kind=kind(ZZBN1))
 DO J = 1,ISTOP
-  ZEN = FLOAT(J)
+  ZEN = REAL(J)
   ZFN = (2.0*ZEN+1.0)/(ZEN*(ZEN+1.0))
 !
 ! for given N, ZPSI  = psi_n        ZCHI  = chi_n
diff --git a/src/MNH/bhmie_bhcoat.f90 b/src/MNH/bhmie_bhcoat.f90
index c235f2ab1bbdb94b9b7aa90b53c1f8207c08033a..154e6c42457f8d64d94086b0094ed17d1424130f 100644
--- a/src/MNH/bhmie_bhcoat.f90
+++ b/src/MNH/bhmie_bhcoat.f90
@@ -2,6 +2,7 @@
 !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 MODI_BHMIE_BHCOAT
 !      ########################
@@ -47,6 +48,7 @@ END MODULE MODI_BHMIE_BHCOAT
 !! History:
 !! 92/11/24 (BTD) Explicit declaration of all variables
 !  P. Wautelet 22/02/2019: add kind parameter for CMPLX intrinsics (if not it default to single precision)
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!***********************************************************************
 !
 !*       0.    DECLARATIONS
@@ -128,7 +130,7 @@ ZZBAK = (0.0,0.0)
 ZONE  = 1.0
 IFLAG = 0
 DO JJ = 1,ISTOP
-  ZEN = FLOAT(JJ)
+  ZEN = REAL(JJ)
   ZPSIY = (2.0*ZEN-1.)*ZPSI1Y/PSIZE_PARAM_COAT - ZPSI0Y
   ZCHIY = (2.0*ZEN-1.)*ZCHI1Y/PSIZE_PARAM_COAT - ZCHI0Y
   ZZXIY = CMPLX(ZPSIY,-ZCHIY,kind=kind(ZZXIY))
diff --git a/src/MNH/bhmie_water.f90 b/src/MNH/bhmie_water.f90
index 1a6a6fb208cfdd58dfc032eb9b6fc8b93988a7c9..433942a3a30f10487d962ea92e1bd6c9df46437a 100644
--- a/src/MNH/bhmie_water.f90
+++ b/src/MNH/bhmie_water.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2007-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !      #######################
        MODULE MODI_BHMIE_WATER
 !      #######################
@@ -71,6 +72,7 @@ END MODULE MODI_BHMIE_WATER
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    01/04/07
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -118,7 +120,7 @@ REAL,    DIMENSION(:), ALLOCATABLE ::  ZABSCISSI,ZWEIGHTS
 !
 !-------------------------------------------------------------------------------
 !
-ZDELTANGLE=0.5E0*XPI/FLOAT(KANGLE-1)
+ZDELTANGLE=0.5E0*XPI/REAL(KANGLE-1)
 ALLOCATE(ZZS1(2*KANGLE-1))
 ALLOCATE(ZZS2(2*KANGLE-1))
 PEXTINCTION_COEF = 0.0 
diff --git a/src/MNH/ch_aer_sedimn.f90 b/src/MNH/ch_aer_sedimn.f90
index a100e700d7e6b25c873fbb7fee59e9e1b46142ce..3f728fceb8af2bb3400b4a06a7584e7df2ab36df 100644
--- a/src/MNH/ch_aer_sedimn.f90
+++ b/src/MNH/ch_aer_sedimn.f90
@@ -1,13 +1,8 @@
-!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!ORILAM_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
 !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !ORILAM_LIC for details.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 chimie 2006/10/18 12:20:58
-!-----------------------------------------------------------------
 !!   ##############################
      MODULE MODI_CH_AER_SEDIM_n
 !!   ##############################
@@ -52,7 +47,8 @@ END MODULE MODI_CH_AER_SEDIM_n
 !!   MODIFICATIONS
 !!    -------------
 !!   Original
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 ! Entry variables:
 !
 ! PM(IN)       -Array of moments
@@ -184,7 +180,7 @@ DO JN=1,JPIN
   ISPLITA = INT(ZVSMAX*PDTMONITOR/ZHMIN)+1
   ISPLITA = MIN(50, ISPLITA)
   !
-  ZTSPLITR  = PDTMONITOR / FLOAT(ISPLITA)   
+  ZTSPLITR  = PDTMONITOR / REAL(ISPLITA)   
   !
   DO JT=1,ISPLITA
     ZFLUXSED(:,:,1:ILU+1,JN)= ZVGK(:,:,1:ILU+1,JN)* ZPM(:,:,1:ILU+1,JN)
diff --git a/src/MNH/ch_aqueous_sedim1mom.f90 b/src/MNH/ch_aqueous_sedim1mom.f90
index cd0cf2e146b3e3350801ed6264a93aa9f496a87a..86e4772967af19b30268c9d24dd277ddf9c4cf4c 100644
--- a/src/MNH/ch_aqueous_sedim1mom.f90
+++ b/src/MNH/ch_aqueous_sedim1mom.f90
@@ -2,6 +2,7 @@
 !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 MODI_CH_AQUEOUS_SEDIM1MOM
 !      ################################
@@ -80,7 +81,8 @@ END MODULE MODI_CH_AQUEOUS_SEDIM1MOM
 !!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!    16/12/15 (M Leriche) compute instantaneous rain at the surface
 !  P. Wautelet 12/02/2019: bugfix: ZRR_SEDIM was not initialized everywhere
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -231,7 +233,7 @@ END IF firstcall
 !
 !*       3.2    time splitting loop initialization
 !
-ZTSPLITR = PTSTEP / FLOAT(KSPLITR)       ! Small time step
+ZTSPLITR = PTSTEP / REAL(KSPLITR)       ! Small time step
 !
 !*       3.3    compute the fluxes
 !
diff --git a/src/MNH/ch_aqueous_sedim2mom.f90 b/src/MNH/ch_aqueous_sedim2mom.f90
index eef9eff0a4d3270823052fe442499af27db22e26..926a552b3e28b8ea9f1f66f40a891319e7591f40 100644
--- a/src/MNH/ch_aqueous_sedim2mom.f90
+++ b/src/MNH/ch_aqueous_sedim2mom.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2008-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !      ################################
        MODULE MODI_CH_AQUEOUS_SEDIM2MOM
 !      ################################
@@ -79,6 +80,7 @@ END MODULE MODI_CH_AQUEOUS_SEDIM2MOM
 !!   12/15 M.Leriche : compute instantaneous rain at the surface 
 !!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1      
 !!   01/16 M. Leriche : Fusion C2R2 and KHKO
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!
 !-------------------------------------------------------------------------------
 !
@@ -178,7 +180,7 @@ PINPRR(:,:) = 0. ! initialize instantaneous precip.
 !
 !*       3.1    time splitting loop initialization
 !
-ZTSPLITR = PTSTEP / FLOAT(KSPLITR)       ! Small time step
+ZTSPLITR = PTSTEP / REAL(KSPLITR)       ! Small time step
 !
 !
 !*       3.2    compute the sedimentation velocities for rain
diff --git a/src/MNH/ch_aqueous_sedimc2r2.f90JPP b/src/MNH/ch_aqueous_sedimc2r2.f90JPP
index 44e309035006c7ab6e55dd143b5309e56ab8b0fe..b34aae9d1b891feac3466e10dfc00a99fca3e224 100644
--- a/src/MNH/ch_aqueous_sedimc2r2.f90JPP
+++ b/src/MNH/ch_aqueous_sedimc2r2.f90JPP
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !      ################################
        MODULE MODI_CH_AQUEOUS_SEDIMC2R2
@@ -192,7 +192,7 @@ firstcall : IF (GSFIRSTCALL) THEN
   ZDZMIN = MINVAL(PZZ(IIB:IIE,IJB:IJE,IKB+1:IKE+1)-PZZ(IIB:IIE,IJB:IJE,IKB:IKE))
   ISPLITR = 1
   SPLIT : DO
-    ZT = PTSTEP / FLOAT(ISPLITR)
+    ZT = PTSTEP / REAL(ISPLITR)
     IF ( ZT * ZVTRMAX / ZDZMIN .LT. 1.) EXIT SPLIT
     ISPLITR = ISPLITR + 1
   END DO SPLIT
@@ -212,7 +212,7 @@ END IF firstcall
 !
 !*       3.3    time splitting loop initialization
 !
-ZTSPLITR = PTSTEP / FLOAT(ISPLITR)       ! Small time step
+ZTSPLITR = PTSTEP / REAL(ISPLITR)       ! Small time step
 !
 !*       3.4    compute the fluxes
 ! 
diff --git a/src/MNH/ch_aqueous_tmicice.f90 b/src/MNH/ch_aqueous_tmicice.f90
index 969909f6082f338238d6c926bb15eb3b7becdc6b..213f6cdf58d5d8ca744a26d6423154b7a259d3f9 100644
--- a/src/MNH/ch_aqueous_tmicice.f90
+++ b/src/MNH/ch_aqueous_tmicice.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2008-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !      ####################################
        MODULE MODI_CH_AQUEOUS_TMICICE
 !      ####################################
@@ -101,6 +102,7 @@ END MODULE MODI_CH_AQUEOUS_TMICICE
 !!    Juan 24/09/2012: for BUG Pgi rewrite PACK function on mode_pack_pgi
 !!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !!    M.Leriche 2015 correction bug
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!
 !-------------------------------------------------------------------------------
 !
@@ -551,10 +553,10 @@ IF( IMICRO >= 1 ) THEN
 !               set of Lbda_s used to tabulate some moments of the incomplete
 !               gamma function
 !
-   ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( FLOAT(NGAMINC)-0.00001,           &
+   ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( REAL(NGAMINC)-0.00001,           &
                          XRIMINTP1 * LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) )
    IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) )
-   ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) )
+   ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) )
 !
 !        6.2.3  perform the linear interpolation of the normalized
 !               "2+XDS"-moment of the incomplete gamma function
@@ -697,15 +699,15 @@ IF( IMICRO >= 1 ) THEN
 !               in the geometrical set of (Lbda_s,Lbda_r) couplet use to
 !               tabulate the RACCSS-kernel
 !
-   ZVEC1(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAS)-0.00001,           &
+   ZVEC1(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAS)-0.00001,           &
                          XACCINTP1S * LOG( ZVEC1(1:IGACC) ) + XACCINTP2S ) )
    IVEC1(1:IGACC) = INT( ZVEC1(1:IGACC) )
-   ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - FLOAT( IVEC1(1:IGACC) )
+   ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - REAL( IVEC1(1:IGACC) )
 !
-   ZVEC2(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAR)-0.00001,           &
+   ZVEC2(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAR)-0.00001,           &
                          XACCINTP1R * LOG( ZVEC2(1:IGACC) ) + XACCINTP2R ) )
    IVEC2(1:IGACC) = INT( ZVEC2(1:IGACC) )
-   ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - FLOAT( IVEC2(1:IGACC) )
+   ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - REAL( IVEC2(1:IGACC) )
 !
 !        6.3.3  perform the bilinear interpolation of the normalized
 !               RACCSS-kernel
@@ -940,15 +942,15 @@ IF( IMICRO >= 1 ) THEN
 !               in the geometrical set of (Lbda_g,Lbda_s) couplet use to
 !               tabulate the SDRYG-kernel
 !
-   ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001,           &
+   ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAG)-0.00001,           &
                          XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) )
    IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) )
-   ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) )
+   ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) )
 !
-   ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAS)-0.00001,           &
+   ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAS)-0.00001,           &
                          XDRYINTP1S * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2S ) )
    IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) )
-   ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) )
+   ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) )
 !
 !        6.5.5  perform the bilinear interpolation of the normalized
 !               SDRYG-kernel
@@ -1004,15 +1006,15 @@ IF( IMICRO >= 1 ) THEN
 !               in the geometrical set of (Lbda_g,Lbda_r) couplet use to
 !               tabulate the RDRYG-kernel
 !
-   ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001,           &
+   ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAG)-0.00001,           &
                          XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) )
    IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) )
-   ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) )
+   ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) )
 !
-   ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAR)-0.00001,           &
+   ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAR)-0.00001,           &
                          XDRYINTP1R * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2R ) )
    IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) )
-   ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) )
+   ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) )
 !
 !        6.5.10 perform the bilinear interpolation of the normalized
 !               RDRYG-kernel
diff --git a/src/MNH/ch_f77.fx90 b/src/MNH/ch_f77.fx90
index 9a8388966ef3e1fdb095d86476d1bca823c81414..9935889845b4345f3f627c0c8011457f39a3f981 100644
--- a/src/MNH/ch_f77.fx90
+++ b/src/MNH/ch_f77.fx90
@@ -23,6 +23,7 @@ C                       real(kind(0.0d0)) (to allow compilation by NAG compiler)
 C**MODIFIED: 08/02/2019 (P.Wautelet) bug fixes: missing argument
 C                                             + wrong use of an non initialized value
 C**MODIFIED: P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+C  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 C!
 C!
 C!
@@ -5457,9 +5458,9 @@ c      INCLUDE 'params'
 
       wlabel = 'equal spacing'
       nw = nwint + 1
-      wincr = (wstop - wstart) / FLOAT (nwint)
+      wincr = (wstop - wstart) / REAL (nwint)
       DO iw = 1, nw-1
-         wl(iw) = wstart + wincr*FLOAT(iw-1)
+         wl(iw) = wstart + wincr*REAL(iw-1)
          wu(iw) = wl(iw) + wincr
          wc(iw) = ( wl(iw) + wu(iw) )/2.
       ENDDO
@@ -5562,7 +5563,7 @@ c      wlabel = 'isaksen.grid'
       DO i = 1, 3859
          iw = 3859 - i + 39
          wn(iw) = 10000 + 10*(i-1)
-         wl(iw) = 1.E7/float(wn(iw))
+         wl(iw) = 1.E7/real(wn(iw))
       ENDDO
 
       nw = 3859 + 38
@@ -5598,9 +5599,9 @@ c      wlabel = 'isaksen.grid'
 
       wlabel = 'grid in air wavelengths'
       nw = nwint + 1
-      wincr = (wstop - wstart) / FLOAT (nwint)
+      wincr = (wstop - wstart) / REAL (nwint)
       DO iw = 1, nw-1
-         wl(iw) = wstart + wincr*FLOAT(iw-1)
+         wl(iw) = wstart + wincr*REAL(iw-1)
          wu(iw) = wl(iw) + wincr
          wc(iw) = ( wl(iw) + wu(iw) )/2.
       ENDDO
@@ -5822,10 +5823,10 @@ c      wlabel = 'isaksen.grid'
 
  1    CONTINUE
       WRITE(*,*) 'equally spaced z-grid'
-      zincr = (zstop - zstart) / FLOAT(nz - 1)
+      zincr = (zstop - zstart) / REAL(nz - 1)
       z(1) = zstart
       DO i = 2, nz
-         z(i) = z(1) + zincr*FLOAT(i-1)
+         z(i) = z(1) + zincr*REAL(i-1)
       ENDDO
       GOTO 10
 
@@ -5834,7 +5835,7 @@ c      wlabel = 'isaksen.grid'
 
  2    CONTINUE
       WRITE(*,*) 'equally spaced z-grid'
-      zincr = (zstop - zstart) / FLOAT(nz - 1)
+      zincr = (zstop - zstart) / REAL(nz - 1)
       nlev = nz-1
       n = 1
       CALL buildz(zincr, nlev, n, z)
@@ -5921,19 +5922,19 @@ c      wlabel = 'isaksen.grid'
       nz = 99
       z(1) = zstart
       DO i = 2, 41
-         z(i) = z(1) + 0.1*FLOAT(i-1)
+         z(i) = z(1) + 0.1*REAL(i-1)
       ENDDO
       DO i = 42, 61
-         z(i) = z(41) + 0.2*FLOAT(i-41)
+         z(i) = z(41) + 0.2*REAL(i-41)
       ENDDO
       DO i = 62, 83
-         z(i) = z(61) + 1.*FLOAT(i-61)
+         z(i) = z(61) + 1.*REAL(i-61)
       ENDDO
       DO i = 84, 93
-         z(i) = z(83) + 2.*FLOAT(i-83)
+         z(i) = z(83) + 2.*REAL(i-83)
       ENDDO
       DO i = 94, 99
-         z(i) = z(93) + 5.*FLOAT(i-93)
+         z(i) = z(93) + 5.*REAL(i-93)
       ENDDO
       GOTO 10
 		
@@ -6100,7 +6101,7 @@ c      INCLUDE 'params'
       j = 0
       DO i = n + 1, n + nlev
         j = j + 1
-        z(i) = z(n) + FLOAT(j)*zincr
+        z(i) = z(n) + REAL(j)*zincr
       ENDDO
       n = n + nlev
 
@@ -6210,11 +6211,11 @@ c
 c       IF(nt .EQ. 1) THEN
 c          dt = 0.
 c       ELSE
-c          dt = (tstop - tstart) / FLOAT(nt - 1)
+c          dt = (tstop - tstart) / REAL(nt - 1)
 c       ENDIF
 c 
 c       DO 10 it = 1, nt
-c          t(it) = tstart + dt * FLOAT(it - 1)
+c          t(it) = tstart + dt * REAL(it - 1)
 c 
 c * solar zenith angle calculation:
 c *  If lzenit = .TRUE., use selected solar zenith angles, also
@@ -9549,7 +9550,7 @@ c      c      INCLUDE 'params'
 
       n = 559*10
       DO 13, i = 1, n
-         lambda_hi(i)=120.5 + FLOAT(i-1)*.05
+         lambda_hi(i)=120.5 + REAL(i-1)*.05
          irrad_hi(i) = irrad_hi(i)  /  1000.
    13 CONTINUE
 *_______________________________________________________________________
@@ -11499,7 +11500,7 @@ c     INCLUDE 'params'
       n = 135
       DO i = 1, n
          READ(UNIT=ilu,FMT=*) idum, y1(i)
-         x1(i) = FLOAT(idum)
+         x1(i) = REAL(idum)
       ENDDO
       CLOSe(UNIT=ilu)
 
@@ -15080,7 +15081,7 @@ c     .. External Subroutines ..
 c     ..
 c     .. Intrinsic Functions ..
 
-      INTRINSIC FLOAT, SQRT
+      INTRINSIC REAL, SQRT
 c     ..
       SAVE      SQT, PASS1
       DATA      PASS1 / .TRUE. /
@@ -15091,7 +15092,7 @@ c     ..
          PASS1  = .FALSE.
 
          DO 10 NS = 1, MAXSQT
-            SQT( NS ) = SQRT( FLOAT( NS ) )
+            SQT( NS ) = SQRT( REAL( NS ) )
    10    CONTINUE
 
       END IF
@@ -15520,7 +15521,7 @@ c     .. External Subroutines ..
 c     ..
 c     .. Intrinsic Functions ..
 
-      INTRINSIC ABS, ASIN, COS, FLOAT, MOD, TAN
+      INTRINSIC ABS, ASIN, COS, MOD, REAL, TAN
 c     ..
       SAVE      PI, TOL
 
@@ -15549,7 +15550,7 @@ c     ..
       EN   = M
       NP1  = M + 1
       NNP1 = M*NP1
-      CONA = FLOAT( M - 1 ) / ( 8*M**3 )
+      CONA = REAL( M - 1 ) / ( 8*M**3 )
 
       LIM  = M / 2
 
@@ -19101,24 +19102,24 @@ C     ##############################
 *=   I       -  INTEGER, identifies the machine constant (0<I<5)         (I) =*
 *=   D1MACH  -  REAL, machine constant in single precision               (O) =*
 *=      I=1     - the smallest non-vanishing normalized floating-point       =*
-*=                power of the radix, i.e., D1MACH=FLOAT(IBETA)**MINEXP      =*
+*=                power of the radix, i.e., D1MACH=REAL(IBETA)**MINEXP      =*
 *=      I=2     - the largest finite floating-point number.  In              =*
-*=                particular D1MACH=(1.0-EPSNEG)*FLOAT(IBETA)**MAXEXP        =*
+*=                particular D1MACH=(1.0-EPSNEG)*REAL(IBETA)**MAXEXP        =*
 *=                Note - on some machines D1MACH will be only the            =*
 *=                second, or perhaps third, largest number, being            =*
 *=                too small by 1 or 2 units in the last digit of             =*
 *=                the significand.                                           =*
 *=      I=3     - A small positive floating-point number such that           =*
 *=                1.0-D1MACH .NE. 1.0. In particular, if IBETA = 2           =*
-*=                or  IRND = 0, D1MACH = FLOAT(IBETA)**NEGEPS.               =*
+*=                or  IRND = 0, D1MACH = REAL(IBETA)**NEGEPS.               =*
 *=                Otherwise,  D1MACH = (IBETA**NEGEPS)/2.  Because           =*
 *=                NEGEPS is bounded below by -(IT+3), D1MACH may not         =*
 *=                be the smallest number that can alter 1.0 by               =*
 *=                subtraction.                                               =*
 *=      I=4     - the smallest positive floating-point number such           =*
 *=                that  1.0+D1MACH .NE. 1.0. In particular, if either        =*
-*=                IBETA = 2  or  IRND = 0, D1MACH=FLOAT(IBETA)**MACHEP.      =*
-*=                Otherwise, D1MACH=(FLOAT(IBETA)**MACHEP)/2                 =*
+*=                IBETA = 2  or  IRND = 0, D1MACH=REAL(IBETA)**MACHEP.      =*
+*=                Otherwise, D1MACH=(REAL(IBETA)**MACHEP)/2                 =*
 *=  (see routine T665D for more information on different constants)          =*
 *-----------------------------------------------------------------------------*
 
@@ -19366,24 +19367,24 @@ C---------- LAST CARD OF T665D ----------
 *=   I       -  INTEGER, identifies the machine constant (0<I<5)         (I) =*
 *=   R1MACH  -  REAL, machine constant in single precision               (O) =*
 *=      I=1     - the smallest non-vanishing normalized floating-point       =*
-*=                power of the radix, i.e., R1MACH=FLOAT(IBETA)**MINEXP      =*
+*=                power of the radix, i.e., R1MACH=REAL(IBETA)**MINEXP      =*
 *=      I=2     - the largest finite floating-point number.  In              =*
-*=                particular R1MACH=(1.0-EPSNEG)*FLOAT(IBETA)**MAXEXP        =*
+*=                particular R1MACH=(1.0-EPSNEG)*REAL(IBETA)**MAXEXP        =*
 *=                Note - on some machines R1MACH will be only the            =*
 *=                second, or perhaps third, largest number, being            =*
 *=                too small by 1 or 2 units in the last digit of             =*
 *=                the significand.                                           =*
 *=      I=3     - A small positive floating-point number such that           =*
 *=                1.0-R1MACH .NE. 1.0. In particular, if IBETA = 2           =*
-*=                or  IRND = 0, R1MACH = FLOAT(IBETA)**NEGEPS.               =*
+*=                or  IRND = 0, R1MACH = REAL(IBETA)**NEGEPS.               =*
 *=                Otherwise,  R1MACH = (IBETA**NEGEPS)/2.  Because           =*
 *=                NEGEPS is bounded below by -(IT+3), R1MACH may not         =*
 *=                be the smallest number that can alter 1.0 by               =*
 *=                subtraction.                                               =*
 *=      I=4     - the smallest positive floating-point number such           =*
 *=                that  1.0+R1MACH .NE. 1.0. In particular, if either        =*
-*=                IBETA = 2  or  IRND = 0, R1MACH=FLOAT(IBETA)**MACHEP.      =*
-*=                Otherwise, R1MACH=(FLOAT(IBETA)**MACHEP)/2                 =*
+*=                IBETA = 2  or  IRND = 0, R1MACH=REAL(IBETA)**MACHEP.      =*
+*=                Otherwise, R1MACH=(REAL(IBETA)**MACHEP)/2                 =*
 *=  (see routine T665R for more information on different constants)          =*
 *-----------------------------------------------------------------------------*
 
@@ -19459,33 +19460,33 @@ C                   than  IT  base  IBETA  digits participate in the
 C                   post-normalization shift of the floating-point
 C                   significand in multiplication.
 C       MACHEP  - the largest negative integer such that
-C                 1.0+FLOAT(IBETA)**MACHEP .NE. 1.0, except that
+C                 1.0+REAL(IBETA)**MACHEP .NE. 1.0, except that
 C                 MACHEP is bounded below by  -(IT+3)
 C       NEGEPS  - the largest negative integer such that
-C                 1.0-FLOAT(IBETA)**NEGEPS .NE. 1.0, except that
+C                 1.0-REAL(IBETA)**NEGEPS .NE. 1.0, except that
 C                 NEGEPS is bounded below by  -(IT+3)
 C       IEXP    - the number of bits (decimal places if IBETA = 10)
 C                 reserved for the representation of the exponent
 C                 (including the bias or sign) of a floating-point
 C                 number
 C       MINEXP  - the largest in magnitude negative integer such that
-C                 FLOAT(IBETA)**MINEXP is positive and normalized
+C                 REAL(IBETA)**MINEXP is positive and normalized
 C       MAXEXP  - the smallest positive power of  BETA  that overflows
 C       EPS     - the smallest positive floating-point number such
 C                 that  1.0+EPS .NE. 1.0. In particular, if either
-C                 IBETA = 2  or  IRND = 0, EPS = FLOAT(IBETA)**MACHEP.
-C                 Otherwise,  EPS = (FLOAT(IBETA)**MACHEP)/2
+C                 IBETA = 2  or  IRND = 0, EPS = REAL(IBETA)**MACHEP.
+C                 Otherwise,  EPS = (REAL(IBETA)**MACHEP)/2
 C       EPSNEG  - A small positive floating-point number such that
 C                 1.0-EPSNEG .NE. 1.0. In particular, if IBETA = 2
-C                 or  IRND = 0, EPSNEG = FLOAT(IBETA)**NEGEPS.
+C                 or  IRND = 0, EPSNEG = REAL(IBETA)**NEGEPS.
 C                 Otherwise,  EPSNEG = (IBETA**NEGEPS)/2.  Because
 C                 NEGEPS is bounded below by -(IT+3), EPSNEG may not
 C                 be the smallest number that can alter 1.0 by
 C                 subtraction.
 C       XMIN    - the smallest non-vanishing normalized floating-point
-C                 power of the radix, i.e.,  XMIN = FLOAT(IBETA)**MINEXP
+C                 power of the radix, i.e.,  XMIN = REAL(IBETA)**MINEXP
 C       XMAX    - the largest finite floating-point number.  In
-C                 particular  XMAX = (1.0-EPSNEG)*FLOAT(IBETA)**MAXEXP
+C                 particular  XMAX = (1.0-EPSNEG)*REAL(IBETA)**MAXEXP
 C                 Note - on some machines  XMAX  will be only the
 C                 second, or perhaps third, largest number, being
 C                 too small by 1 or 2 units in the last digit of
@@ -20573,7 +20574,7 @@ c     INCLUDE 'params'
         CLOSE (UNIT=ilu)
         DO i = 1, n
           y1(i) =  y1(i) * 1.E-19
-          x1(i) = 400. + 1.*FLOAT(i-1)
+          x1(i) = 400. + 1.*REAL(i-1)
         ENDDO
 
         CALL addpnt(x1,y1,kdata,n,x1(1)*(1.-deltax),0.)
@@ -35296,7 +35297,7 @@ c      INCLUDE 'params'
       CLOSE(UNIT=ilu)
 
       DO m = 1, 12
-         tmp(m) = 190. + 10.*FLOAT(m-1)
+         tmp(m) = 190. + 10.*REAL(m-1)
          IF(m .EQ. 1) tmp(m) = 180.
 
          DO i = 1, nn
@@ -40664,7 +40665,7 @@ c      INCLUDE 'params'
       WRITE(kout,*)'aerosols:  Elterman (1968) continental profile'
       nd = 51
       DO 22, i = 1, nd
-         zd(i) = FLOAT(i-1)
+         zd(i) = REAL(i-1)
    22 CONTINUE
 
 * assume these are point values (at each level), so find column
diff --git a/src/MNH/ch_init_jvalues.f90 b/src/MNH/ch_init_jvalues.f90
index df8e26e72607081300dc8a4427b1e032ed103dcf..68080578b1fa12d756472238ebf0ee8c670f8bfe 100644
--- a/src/MNH/ch_init_jvalues.f90
+++ b/src/MNH/ch_init_jvalues.f90
@@ -64,6 +64,7 @@ END MODULE MODI_CH_INIT_JVALUES
 !!                              interpolation
 !!          01/12/04 (P. Tulet) update for arome
 !!          19/06/2014(J.Escobar & M.Leriche) write(kout,...) to OUTPUT_LISTING file
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!
 !!    EXTERNAL
 !!    --------
@@ -123,7 +124,7 @@ IF (.NOT.ALLOCATED(XJDATA)) ALLOCATE(XJDATA(NSZA_INCR,NZZ_JVAL,JPJVMAX,NBALB))
   !
   IF (.NOT. ALLOCATED(XSZA_JVAL)) ALLOCATE(XSZA_JVAL(NSZA_INCR))
   DO JSZA = 1, NSZA_INCR 
-   XSZA_JVAL(JSZA) = FLOAT(JSZA-1)
+   XSZA_JVAL(JSZA) = REAL(JSZA-1)
   ENDDO
   !
   !* Ozone Column
@@ -136,10 +137,10 @@ IF (.NOT.ALLOCATED(XJDATA)) ALLOCATE(XJDATA(NSZA_INCR,NZZ_JVAL,JPJVMAX,NBALB))
   !
   !* Vertical Levels
   !
-  ZDZ = ZMAX / FLOAT(NZZ_JVAL - 1)
+  ZDZ = ZMAX / REAL(NZZ_JVAL - 1)
   IF(.NOT.ALLOCATED(XZZ_JVAL))  ALLOCATE(XZZ_JVAL(NZZ_JVAL))
   DO JKLEV = 1, NZZ_JVAL
-    XZZ_JVAL(JKLEV) = FLOAT(JKLEV-1) * ZDZ
+    XZZ_JVAL(JKLEV) = REAL(JKLEV-1) * ZDZ
     ZLWC(JKLEV)= 0.0
   ENDDO
   !
@@ -147,7 +148,7 @@ IF (.NOT.ALLOCATED(XJDATA)) ALLOCATE(XJDATA(NSZA_INCR,NZZ_JVAL,JPJVMAX,NBALB))
   !        --------------
   !
   DO JALB=1,NBALB
-    ZALBLOOP=0.02+0.20*FLOAT(JALB-1)/FLOAT(NBALB-1) 
+    ZALBLOOP=0.02+0.20*REAL(JALB-1)/REAL(NBALB-1) 
     DO JSZA = 1, NSZA_INCR
       ZSZALOOP = XSZA_JVAL(JSZA)
       CALL TUVMAIN(  ZSZALOOP, IDATE,           &
diff --git a/src/MNH/ch_interp_jvalues.f90 b/src/MNH/ch_interp_jvalues.f90
index b643e7d6d4a63aa0e5f4b5e59bddd143937d1f60..5dd98d62cfd4f1bb0471a633776bfb4ad7d68f77 100644
--- a/src/MNH/ch_interp_jvalues.f90
+++ b/src/MNH/ch_interp_jvalues.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2001-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 chimie 2006/07/20 11:45:57
-!-----------------------------------------------------------------
 !      #############################
        MODULE MODI_CH_INTERP_JVALUES
 !      #############################
@@ -63,6 +58,7 @@ USE MODD_CH_INIT_JVALUES, ONLY : JPJVMAX
 !!    P. Tulet 01/11/03  externalisation surface/ UV albedos from
 !                        radiations
 !!    P. Tulet 01/06/05  updates for arome
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!
 !!------------------------------------------------------------------------------
 !!
@@ -243,8 +239,8 @@ PJVALUES(:,:,:,:) =  ZJDATAALB(:,:,:,:,1)
 !
 
 DO JALB=1,NBALB-1
-  ZALB1(:,:) = 0.02+0.20*FLOAT(JALB-1)/FLOAT(NBALB-1)
-  ZALB2(:,:) = 0.02+0.20*FLOAT(JALB  )/FLOAT(NBALB-1)
+  ZALB1(:,:) = 0.02+0.20*REAL(JALB-1)/REAL(NBALB-1)
+  ZALB2(:,:) = 0.02+0.20*REAL(JALB  )/REAL(NBALB-1)
   
   DO JJVAL = 1, JPJVMAX
     DO JH = IKB, IKE
diff --git a/src/MNH/ch_make_lookup.f90 b/src/MNH/ch_make_lookup.f90
index aac6f60374547d6ea71d3c516754ed42b194b6af..3e1b6ce308d67583a72a93b5d0b4ca4b549369f2 100644
--- a/src/MNH/ch_make_lookup.f90
+++ b/src/MNH/ch_make_lookup.f90
@@ -53,6 +53,7 @@
 !!    -------------
 !!    Original 01/03/99
 !!    Philippe Wautelet: 10/01/2019: use newunit argument to open files
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!
 !!    EXTERNAL
 !!    --------
@@ -100,14 +101,14 @@ NAMELIST /NAM_TUV/ ALAT, ALONG, IDATE, ALBNEW, DOBNEW
 !        -------------------
 !
 !      initialize az and atime
-DZ = ZMAX / FLOAT(NLEVEL - 1)
+DZ = ZMAX / REAL(NLEVEL - 1)
 DO J = 1, NLEVEL
-  AZ(J) = FLOAT(J-1) * DZ
+  AZ(J) = REAL(J-1) * DZ
   LWC(J)= 0.0
 ENDDO
-DT = 24.00 / FLOAT(NTIME - 1)
+DT = 24.00 / REAL(NTIME - 1)
 DO I = 1, NTIME
-  ATIME(I) = FLOAT(I-1) * DT
+  ATIME(I) = REAL(I-1) * DT
 ENDDO
 !
 !      initialize default values
diff --git a/src/MNH/ch_meteo_trans_c2r2.f90 b/src/MNH/ch_meteo_trans_c2r2.f90
index 02c25bb7121a6322473a5dadc016198d286298dd..8ee2d933402524f3d46e14e48042813ca6764879 100644
--- a/src/MNH/ch_meteo_trans_c2r2.f90
+++ b/src/MNH/ch_meteo_trans_c2r2.f90
@@ -98,6 +98,7 @@ SUBROUTINE CH_METEO_TRANS_C2R2(KL, PRHODJ, PRHODREF, PRTSM, PCCTSM, PCRTSM,   &
 !!    05/06/08 (M. Leriche) calculate LWC and LWR in coherence with time spliting scheme
 !!    05/11/08 (M. Leriche) split in two routines for 1-moment and 2-moment cloud schemes
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!
 !!    EXTERNAL
 !!    --------
@@ -327,9 +328,9 @@ DO JM=0,KVECNPT-1
 !
 !  "Current date"
 !
-  TPM(JM+1)%XMETEOVAR(8) = FLOAT(KYEAR)
-  TPM(JM+1)%XMETEOVAR(9) = FLOAT(KMONTH)
-  TPM(JM+1)%XMETEOVAR(10)= FLOAT(KDAY)
+  TPM(JM+1)%XMETEOVAR(8) = REAL(KYEAR)
+  TPM(JM+1)%XMETEOVAR(9) = REAL(KMONTH)
+  TPM(JM+1)%XMETEOVAR(10)= REAL(KDAY)
 !
 ! "Rain water (kg/kg)"
 !
diff --git a/src/MNH/ch_meteo_trans_kess.f90 b/src/MNH/ch_meteo_trans_kess.f90
index 74bd129b6cfcc6b745181566ad3e48e21e7d1771..a539ebebb40124f14bd4ba09e1bbae588334f73a 100644
--- a/src/MNH/ch_meteo_trans_kess.f90
+++ b/src/MNH/ch_meteo_trans_kess.f90
@@ -96,6 +96,7 @@ SUBROUTINE CH_METEO_TRANS_KESS(KL, PRHODJ, PRHODREF, PRTSM, PTHT, PABST, &
 !!    05/06/08 (M. Leriche) calculate LWC and LWR in coherence with time spliting scheme
 !!    05/11/08 (M. Leriche) split in two routines for 1-moment and 2-moment cloud schemes
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!
 !!    EXTERNAL
 !!    --------
@@ -329,9 +330,9 @@ DO JM=0,KVECNPT-1
 !
 !  "Current date"
 !
-  TPM(JM+1)%XMETEOVAR(8) = FLOAT(KYEAR)
-  TPM(JM+1)%XMETEOVAR(9) = FLOAT(KMONTH)
-  TPM(JM+1)%XMETEOVAR(10)= FLOAT(KDAY)
+  TPM(JM+1)%XMETEOVAR(8) = REAL(KYEAR)
+  TPM(JM+1)%XMETEOVAR(9) = REAL(KMONTH)
+  TPM(JM+1)%XMETEOVAR(10)= REAL(KDAY)
 !
 ! "Rain water (kg/kg)"
 !
diff --git a/src/MNH/ch_model0d.f90 b/src/MNH/ch_model0d.f90
index e93cb849380821c0c1e048459efa72d0f50a4465..c2b4fb45727db9663e58f0c26b1a9bf6a853f702 100644
--- a/src/MNH/ch_model0d.f90
+++ b/src/MNH/ch_model0d.f90
@@ -43,6 +43,7 @@
 !!    24/24/14 (M. Leriche) add ReLACS3
 !!    M.Leriche 2015 : masse molaire Black carbon à 12 g/mol
 !!    Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!
 !!    EXTERNAL
 !!    --------
@@ -354,10 +355,10 @@ DO JI=1,11
   IBIS(JI) = INOBIS(JI)+1
 END DO
 IF( MOD(IYEAR,4).EQ.0 ) THEN
-  ZDATE = FLOAT(IDAY +   IBIS(IMONTH-1)) - 1
+  ZDATE = REAL(IDAY +   IBIS(IMONTH-1)) - 1
   ZAD = 2.0*ZPI*ZDATE/366.0
 ELSE
-  ZDATE = FLOAT(IDAY + INOBIS(IMONTH-1)) - 1
+  ZDATE = REAL(IDAY + INOBIS(IMONTH-1)) - 1
   ZAD = 2.0*ZPI*ZDATE/365.0
 END IF
 ZDECSOL = 0.006918-0.399912*COS(ZAD)   +0.070257*SIN(ZAD)    &
diff --git a/src/MNH/ch_ph_polyroot.f90 b/src/MNH/ch_ph_polyroot.f90
index 1ae312322653d95160aca63c61bb343769fc91e3..6b4f9458a8023ceacc6baacd77f045744b761c1a 100644
--- a/src/MNH/ch_ph_polyroot.f90
+++ b/src/MNH/ch_ph_polyroot.f90
@@ -1,6 +1,6 @@
 !MNH_LIC Copyright 2007-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !     ##########################
       MODULE MODI_CH_PH_POLYROOT
@@ -35,6 +35,7 @@ END MODULE MODI_CH_PH_POLYROOT
 !!    -------------
 !!      Original    26/03/07
 !  P. Wautelet 22/02/2019: add kind parameter for CMPLX intrinsics (if not it default to single precision)
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -143,7 +144,7 @@ CONTAINS
       ZZG  = ZZD/ZZB
       ZZG2 = ZZG*ZZG
       ZZH  = ZZG2 - 2.0*(ZZF/ZZB)
-      ZZSQ = SQRT( FLOAT(IM-1)*(FLOAT(IM)*ZZH-ZZG2) ) 
+      ZZSQ = SQRT( REAL(IM-1)*(REAL(IM)*ZZH-ZZG2) ) 
       ZZGP = ZZG + ZZSQ
       ZZGM = ZZG - ZZSQ
 !
@@ -153,7 +154,7 @@ CONTAINS
         ZZGP = ZZGM
       END IF
       IF(MAX(ZABP,ZABM) > 0.0) THEN
-        ZZDX = FLOAT(IM)/ZZGP
+        ZZDX = REAL(IM)/ZZGP
         ELSE
         ZZDX = EXP(CMPLX(LOG(1.0+ZABX),REAL(JITER,kind=kind(ZZDX)),kind=kind(ZZDX)))
       END IF 
diff --git a/src/MNH/ch_solve_ph.f90 b/src/MNH/ch_solve_ph.f90
index 5662675448f93e31415070fdd57f08e60b6e1b5e..34db6d207675381e044f41da5df3e78a39cd0bc7 100644
--- a/src/MNH/ch_solve_ph.f90
+++ b/src/MNH/ch_solve_ph.f90
@@ -60,6 +60,7 @@ END MODULE MODI_CH_SOLVE_PH
 !!    J.-P. Pinty 11/07/07 add CO3-- and SO3--
 !!    M. Leriche 05/06/08 add sum of ions
 !  P. Wautelet 22/02/2019: add kind parameter for CMPLX intrinsics (if not it default to single precision)
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!
 !!    EXTERNAL
 !!    --------
@@ -249,7 +250,7 @@ END DO
 IF( .not.GPH_TOT ) THEN
   WRITE(UNIT=KLUOUT,FMT='("CH_SOLVE_PH: no convergence in the range ", &
                         & "0<pH<12,  Nunber of case =",F6.2," %")')    &
-                           100.0*( 1.0-(FLOAT(ITRUE)/FLOAT(KLW)) )
+                           100.0*( 1.0-(REAL(ITRUE)/REAL(KLW)) )
 ENDIF
 !
 DEALLOCATE(ZCOEFS)
diff --git a/src/MNH/clustering.f90 b/src/MNH/clustering.f90
index 882de5a753ef9996e2b6b0aaed370d1d39bfd646..f1dfe3383c6783497882fc53b91efca61d74bbaf 100644
--- a/src/MNH/clustering.f90
+++ b/src/MNH/clustering.f90
@@ -60,15 +60,15 @@ END MODULE MODI_CLUSTERING
 !!      Modified    13/11/14    T. Dauhut   adding property field analyse
 !!      Modified    13/06/17    T. Dauhut   to start volume scan from top
 !!      Modified    04/10/17    T. Dauhut   to be added to next MNH versions
-!!
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
 !               ------------
 USE MODD_ARGSLIST_ll, ONLY: LIST_ll
 USE MODD_DYN_n,       ONLY: XDXHATM, XDYHATM
-USE MODD_MPIF ,       ONLY: MPI_INTEGER
-use MODD_PRECISION,   only: MNHREAL_MPI
+use MODD_PRECISION,   only: MNHINT_MPI, MNHREAL_MPI
 USE MODD_VAR_ll,      ONLY: NPROC, IP, NMNH_COMM_WORLD
 !
 USE MODE_ll
@@ -643,7 +643,7 @@ DEALLOCATE(ZLOCLISTFLD)
 !PRINT *,IRANK,'concatenate non-redundant 1D table'
 !
 ALLOCATE(ICLUSNBR(NPROC))   ! number of clusters in each proc's local domain
-CALL MPI_ALLGATHER(ICPT, 1, MPI_INTEGER, ICLUSNBR, 1, MPI_INTEGER, NMNH_COMM_WORLD, INFO)
+CALL MPI_ALLGATHER(ICPT, 1, MNHINT_MPI, ICLUSNBR, 1, MNHINT_MPI, NMNH_COMM_WORLD, INFO)
 ! each processor knows now how many clusters appear in all other processor domains
 !
 !PRINT *,IRANK,'build IPROCDPL'
@@ -669,11 +669,11 @@ IGLBLISTSEC=0
 ZGLBLISTFLD=0.
 !
 !PRINT *,IRANK,'call all-gatherv'
-CALL MPI_ALLGATHERV(ILOCLISTIDT2, ICPT, MPI_INTEGER, IGLBLISTIDT, ICLUSNBR, IPROCDPL, MPI_INTEGER, &
+CALL MPI_ALLGATHERV(ILOCLISTIDT2, ICPT, MNHINT_MPI, IGLBLISTIDT, ICLUSNBR, IPROCDPL, MNHINT_MPI, &
                     NMNH_COMM_WORLD, INFO)
-CALL MPI_ALLGATHERV(ILOCLISTLVL2, ICPT, MPI_INTEGER, IGLBLISTLVL, ICLUSNBR, IPROCDPL, MPI_INTEGER, &
+CALL MPI_ALLGATHERV(ILOCLISTLVL2, ICPT, MNHINT_MPI, IGLBLISTLVL, ICLUSNBR, IPROCDPL, MNHINT_MPI, &
                     NMNH_COMM_WORLD, INFO)
-CALL MPI_ALLGATHERV(ILOCLISTSEC2, ICPT, MPI_INTEGER, IGLBLISTSEC, ICLUSNBR, IPROCDPL, MPI_INTEGER, &
+CALL MPI_ALLGATHERV(ILOCLISTSEC2, ICPT, MNHINT_MPI, IGLBLISTSEC, ICLUSNBR, IPROCDPL, MNHINT_MPI, &
                     NMNH_COMM_WORLD, INFO)
 CALL MPI_ALLGATHERV(ZLOCLISTFLD2, ICPT, MNHREAL_MPI, ZGLBLISTFLD, ICLUSNBR, IPROCDPL, MNHREAL_MPI, &
                     NMNH_COMM_WORLD, INFO)
diff --git a/src/MNH/fft.f b/src/MNH/fft.f
index b0fa5e744f3412393c4203053420bed13b5b414d..7a9e69545e8812c434477cf976486af6cba2229c 100644
--- a/src/MNH/fft.f
+++ b/src/MNH/fft.f
@@ -5,6 +5,7 @@
 !-----------------------------------------------------------------
 ! Modifications:
 !  P. Wautelet 22/02/2019: replace Hollerith edit descriptor (deleted from Fortran 95 standard)
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-----------------------------------------------------------------
       SUBROUTINE SET99(TRIGS,IFAX,N)
       IMPLICIT LOGICAL (L)
@@ -20,11 +21,11 @@ C
 C
       IXXX=1
 C
-      DEL=4.0*ASIN(1.0)/FLOAT(N)
+      DEL=4.0*ASIN(1.0)/REAL(N)
       NIL=0
       NHL=(N/2)-1
       DO 10 K=NIL,NHL
-      ANGLE=FLOAT(K)*DEL
+      ANGLE=REAL(K)*DEL
       TRIGS(2*K+1)=COS(ANGLE)
       TRIGS(2*K+2)=SIN(ANGLE)
    10 CONTINUE
@@ -1225,7 +1226,7 @@ CDIR$ IVDEP
       GO TO 900
 C
   290 CONTINUE
-      Z=1.0/FLOAT(N)
+      Z=1.0/REAL(N)
       DO 294 JL=1,ILA
       I=IBASE
       J=JBASE
@@ -1338,7 +1339,7 @@ CDIR$ IVDEP
       GO TO 900
 C
   390 CONTINUE
-      Z=1.0/FLOAT(N)
+      Z=1.0/REAL(N)
       ZSIN60=Z*SIN60
       DO 394 JL=1,ILA
       I=IBASE
@@ -1467,7 +1468,7 @@ CDIR$ IVDEP
       GO TO 900
 C
   490 CONTINUE
-      Z=1.0/FLOAT(N)
+      Z=1.0/REAL(N)
       DO 494 JL=1,ILA
       I=IBASE
       J=JBASE
@@ -1630,7 +1631,7 @@ CDIR$ IVDEP
       GO TO 900
 C
   590 CONTINUE
-      Z=1.0/FLOAT(N)
+      Z=1.0/REAL(N)
       ZQRT5=Z*QRT5
       ZSIN36=Z*SIN36
       ZSIN72=Z*SIN72
@@ -1806,7 +1807,7 @@ CDIR$ IVDEP
       GO TO 900
 C
   690 CONTINUE
-      Z=1.0/FLOAT(N)
+      Z=1.0/REAL(N)
       ZSIN60=Z*SIN60
       DO 694 JL=1,ILA
       I=IBASE
@@ -1849,7 +1850,7 @@ C     -------------------
       JC=JB+2*M*INC2
       JD=JC+2*M*INC2
       JE=JD+2*M*INC2
-      Z=1.0/FLOAT(N)
+      Z=1.0/REAL(N)
       ZSIN45=Z*SQRT(0.5)
 C
       DO 820 JL=1,ILA
diff --git a/src/MNH/fft55.f90 b/src/MNH/fft55.f90
index 42ed1433d878b10a5ebefd4385901cec80f22444..7f73c201a3ea25f8aeb187d94805e787460e5bdf 100644
--- a/src/MNH/fft55.f90
+++ b/src/MNH/fft55.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1987-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 solver 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     ######spl
       SUBROUTINE FFT55(PA,PWORK,PTRIGS,KIFAX,KINC,KJUMP,KN,KLOT,KISIGN)
 !     #################################################################
@@ -68,6 +63,7 @@
 !!                   RFFTMLT by the arpege routine FFT991
 !!      Revision J. Stein and P. Jabouille (juillet 96) extend the pre- 
 !!                   and post-processing to the odd number
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -137,7 +133,7 @@ IF (KISIGN.EQ.1) THEN
 !      2.1     preprocessing
 !              -------------
 !
-    ZSCALE=0.5*FLOAT(KN)
+    ZSCALE=0.5*REAL(KN)
 ! this loop works for odd and even case
     DO JK=1,(KN-1)/2
       IJA=JK+1
@@ -261,7 +257,7 @@ ELSE
 !      3.3     postprocessing
 !              --------------
 !
-    ZSCALE=0.5/FLOAT(KN)
+    ZSCALE=0.5/REAL(KN)
 ! this loop works for odd and even case
     DO JK=1,(KN-1)/2
       IIA=JK+1
diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90
index b7686962ca5cf08e65b81f7a756e6901aea622be..3538f4b3e1530b693666d6c7602d8d5650134739 100644
--- a/src/MNH/flash_geom_elec.f90
+++ b/src/MNH/flash_geom_elec.f90
@@ -97,6 +97,8 @@ END MODULE MODI_FLASH_GEOM_ELEC_n
 !  P. Wautelet 22/02/2019: use MOD intrinsics with same kind for all arguments (to respect Fortran standard)
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 19/04/2019: use modd_precision kinds
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*      0.      DECLARATIONS
@@ -121,7 +123,7 @@ USE MODD_LMA_SIMULATOR
 USE MODD_METRICS_n,      ONLY: XDXX, XDYY, XDZZ ! in linox_production
 USE MODD_NSV,            ONLY: NSV_ELECBEG, NSV_ELECEND, NSV_ELEC
 USE MODD_PARAMETERS,     ONLY: JPHEXT, JPVEXT
-use MODD_PRECISION,      only: MNHREAL_MPI
+use MODD_PRECISION,      only: MNHINT_MPI, MNHLOG_MPI, MNHREAL_MPI
 USE MODD_RAIN_ICE_DESCR, ONLY: XLBR, XLBEXR, XLBS, XLBEXS, &
                                XLBG, XLBEXG, XLBH, XLBEXH, &
                                XRTMIN
@@ -499,7 +501,7 @@ DO WHILE (.NOT. GEND_DOMAIN .AND. INB_CELL .LT. NMAX_CELL)
     ICELL_LOC(4,INB_CELL) = IPROC_CELL
 ! 
 ! Broadcast the center of the cell to all procs
-    CALL MPI_BCAST (ICELL_LOC(:,INB_CELL), 4, MPI_INTEGER, IPROC_CELL, &
+    CALL MPI_BCAST (ICELL_LOC(:,INB_CELL), 4, MNHINT_MPI, IPROC_CELL, &
                     NMNH_COMM_WORLD, IERR)
 !
 !
@@ -855,11 +857,11 @@ ENDIF
        CALL MPPDB_CHECK3DM("flash:: 5. ZFLASH(IL)",PRECISION,&
              ZFLASH(:,:,:,IL))
 !
-        CALL MPI_BCAST (GNEW_FLASH(IL),1,   MPI_LOGICAL, IPROC_TRIG(IL), &
+        CALL MPI_BCAST (GNEW_FLASH(IL),1,   MNHLOG_MPI, IPROC_TRIG(IL), &
                         NMNH_COMM_WORLD, IERR)
         CALL MPI_BCAST (ZEM_TRIG(IL), 1,    MNHREAL_MPI, IPROC_TRIG(IL), &
                         NMNH_COMM_WORLD, IERR)
-        CALL MPI_BCAST (INB_FL_REAL(IL), 1, MPI_INTEGER, IPROC_TRIG(IL), &
+        CALL MPI_BCAST (INB_FL_REAL(IL), 1, MNHINT_MPI, IPROC_TRIG(IL), &
                         NMNH_COMM_WORLD, IERR)
       END IF
     END DO  ! end loop il
@@ -978,7 +980,7 @@ ENDIF
 !
           DO IM = 1, IDELTA_IND
             IF (IHIST_GLOB(IM) .GT. 0) THEN
-              ZHIST_PERCENT(IM) = FLOAT(IHIST_LOC(IM)) / FLOAT(IHIST_GLOB(IM))
+              ZHIST_PERCENT(IM) = REAL(IHIST_LOC(IM)) / REAL(IHIST_GLOB(IM))
             END IF
 !
 !
@@ -990,7 +992,7 @@ ENDIF
 !*      8.1     max number of branches at distance d from the triggering point
 !
             ZMAX_BRANCH(IM) = (XDFRAC_L / ZMEAN_GRID) * &
-                              FLOAT(IIND_MIN+IM-1)**(XDFRAC_ECLAIR - 1.)
+                              REAL(IIND_MIN+IM-1)**(XDFRAC_ECLAIR - 1.)
             ZMAX_BRANCH(IM) = ANINT(ZMAX_BRANCH(IM))
 ! all procs know the max total number of branches at distance d
 ! => the max number of branches / proc is proportional to the percentage of 
@@ -1061,7 +1063,7 @@ ENDIF
         END IF
 !
         IF (GNEUTRALIZATION .AND. (.NOT. GCG) .AND. ZQNET .NE. 0.) THEN
-          ZQNET = ZQNET / FLOAT(INB_NEUT) 
+          ZQNET = ZQNET / REAL(INB_NEUT) 
           WHERE (ZSIGLOB(IIB:IIE,IJB:IJE,IKB:IKE) .GE. ZSIGMIN .AND. &
                  ZQFLASH(IIB:IIE,IJB:IJE,IKB:IKE) .NE. 0.)
             ZQFLASH(IIB:IIE,IJB:IJE,IKB:IKE) = ZQFLASH(IIB:IIE,IJB:IJE,IKB:IKE) - &
@@ -1148,15 +1150,15 @@ ENDIF
              INB_NEUT_OK = INB_NEUT_OK + INB_NEUT
           END IF
 !
-          CALL MPI_BCAST (INB_NEUT_OK,1, MPI_INTEGER, IPROC_TRIG(IL), &
+          CALL MPI_BCAST (INB_NEUT_OK,1, MNHINT_MPI, IPROC_TRIG(IL), &
                     NMNH_COMM_WORLD, IERR)
 !
 !*      9.5     Gather lightning information from all processes
 !*              Save the particule charge and total pos/neg charge neutralization points.
 !*                   the coordinates of all flash branch points
 !
-          CALL MPI_ALLGATHER(INBSEG(IL), 1, MPI_INTEGER, &
-                             INBSEG_PROC,  1, MPI_INTEGER, NMNH_COMM_WORLD, IERR)
+          CALL MPI_ALLGATHER(INBSEG(IL), 1, MNHINT_MPI, &
+                             INBSEG_PROC,  1, MNHINT_MPI, NMNH_COMM_WORLD, IERR)
 
           INBSEG_ALL(IL) = INBSEG(IL)
           CALL SUM_ELEC_ll(INBSEG_ALL(IL))
@@ -1473,7 +1475,7 @@ ENDIF
                                                                      ! implicit
       END IF
       CALL SUM_ELEC_ll (XLNOX_ECLAIR)
-      XLNOX_ECLAIR = XLNOX_ECLAIR / (XAVOGADRO * FLOAT(IFLASH_COUNT_GLOB))
+      XLNOX_ECLAIR = XLNOX_ECLAIR / (XAVOGADRO * REAL(IFLASH_COUNT_GLOB))
     END IF
     DEALLOCATE (ZLNOX)
   END IF
@@ -1694,11 +1696,11 @@ DO IL = 1, INB_CELL
     CALL MPI_BCAST (ZEM_TRIG(IL), 1, &
                     MNHREAL_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
     CALL MPI_BCAST (ISEG_LOC(:,IL), 3*SIZE(PRT,3), &
-                    MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                    MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
     CALL MPI_BCAST (ZCOORD_TRIG(:,IL), 3, &
                     MNHREAL_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
     CALL MPI_BCAST (ISIGNE_EZ(IL), 1, &
-                    MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                    MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 !
 !
 !*      5.      CHECK IF THE FLASH CAN DEVELOP
@@ -1711,9 +1713,9 @@ DO IL = 1, INB_CELL
 !
       GNEW_FLASH(IL) = .TRUE.
       GNEW_FLASH_GLOB = .TRUE.
-      CALL MPI_BCAST (GNEW_FLASH(IL),1, MPI_LOGICAL, IPROC_TRIG(IL), &
+      CALL MPI_BCAST (GNEW_FLASH(IL),1, MNHLOG_MPI, IPROC_TRIG(IL), &
                       NMNH_COMM_WORLD, IERR)
-      CALL MPI_BCAST (GNEW_FLASH_GLOB,1, MPI_LOGICAL, IPROC_TRIG(IL), &
+      CALL MPI_BCAST (GNEW_FLASH_GLOB,1, MNHLOG_MPI, IPROC_TRIG(IL), &
                       NMNH_COMM_WORLD, IERR)
     END IF
   END IF 
@@ -1884,18 +1886,18 @@ END IF  ! only iproc_trig was working
 !              ---------------------------------------
 !
 CALL MPI_BCAST (ISEG_LOC(:,IL), 3*SIZE(PRT,3), &  
-                MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 CALL MPI_BCAST (ITYPE(IL), 1, &
-                MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 
 CALL MPI_BCAST (GCG, 1, &
-                MPI_LOGICAL, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                MNHLOG_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 CALL MPI_BCAST (GCG_POS, 1, &
-                MPI_LOGICAL, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                MNHLOG_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 CALL MPI_BCAST (NNB_CG, 1, &
-                MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 CALL MPI_BCAST (NNB_CG_POS, 1, &
-                MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 
 !
 CALL MPPDB_CHECK3DM("flash:: one_leader end ZFLASH",PRECISION,ZFLASH(:,:,:,IL))
@@ -1953,10 +1955,10 @@ DO IL = 1, INB_CELL
       IKBL     = ISEG_LOC(IIDECAL+3,IL)
 !
       IF (ZQMTOT(IIBL_LOC,IJBL_LOC,IKBL) .GT. 0. .AND. GPOSITIVE) THEN
-        ZSIGN_AREA(IIBL_LOC,IJBL_LOC,IKBL) = 1. * FLOAT(IL)
+        ZSIGN_AREA(IIBL_LOC,IJBL_LOC,IKBL) = 1. * REAL(IL)
         ZSIGN(IL) = ZSIGN_AREA(IIBL_LOC,IJBL_LOC,IKBL)
       ELSE IF (ZQMTOT(IIBL_LOC,IJBL_LOC,IKBL) .LT. 0. .AND. .NOT.GPOSITIVE) THEN
-        ZSIGN_AREA(IIBL_LOC,IJBL_LOC,IKBL) = -1. * FLOAT(IL)
+        ZSIGN_AREA(IIBL_LOC,IJBL_LOC,IKBL) = -1. * REAL(IL)
         ZSIGN(IL) = ZSIGN_AREA(IIBL_LOC,IJBL_LOC,IKBL)
       END IF
     END DO
@@ -2148,8 +2150,8 @@ DO WHILE (IM .LE. IDELTA_IND .AND. ISTOP .NE. 1)
 !
       IF (IMAX_BRANCH(IM) .GT. 0) THEN
         INBPT_PROC(:) = 0
-        CALL MPI_ALLGATHER(IPT_DIST, 1, MPI_INTEGER, &
-                   INBPT_PROC, 1, MPI_INTEGER, NMNH_COMM_WORLD, IERR)
+        CALL MPI_ALLGATHER(IPT_DIST, 1, MNHINT_MPI, &
+                   INBPT_PROC, 1, MNHINT_MPI, NMNH_COMM_WORLD, IERR)
 !
         IDISPL(1) = 0
         DO JI=2, NPROC+1
@@ -2180,8 +2182,8 @@ DO WHILE (IM .LE. IDELTA_IND .AND. ISTOP .NE. 1)
         ALLOCATE(IORDER_LL(IPT_DIST_GLOB))
         CALL MPI_ALLGATHERV(I8VECT,IPT_DIST, MNHINT64_MPI,I8VECT_LL , &
                         INBPT_PROC, IDISPL, MNHINT64_MPI, NMNH_COMM_WORLD, IERR)
-        CALL MPI_ALLGATHERV(IRANK,IPT_DIST, MPI_INTEGER,IRANK_LL , &
-                        INBPT_PROC, IDISPL, MPI_INTEGER, NMNH_COMM_WORLD, IERR)
+        CALL MPI_ALLGATHERV(IRANK,IPT_DIST, MNHINT_MPI,IRANK_LL , &
+                        INBPT_PROC, IDISPL, MNHINT_MPI, NMNH_COMM_WORLD, IERR)
         CALL N8QUICK_SORT(I8VECT_LL, IORDER_LL)
 !
         DO IPOINT = 1, MIN(IMAX_BRANCH(IM), INB_SEG_TO_BRANCH)
@@ -2371,8 +2373,8 @@ IF (LLMA) THEN
 !
   ALLOCATE (IRECV(3*INSEGCELL))
 !
-  CALL MPI_GATHERV (ISEND, 3*INSEGPROC, MPI_INTEGER, IRECV, INBSEG_PROC_X3, &
-                    IDECAL3, MPI_INTEGER, 0, NMNH_COMM_WORLD, IERR)
+  CALL MPI_GATHERV (ISEND, 3*INSEGPROC, MNHINT_MPI, IRECV, INBSEG_PROC_X3, &
+                    IDECAL3, MNHINT_MPI, 0, NMNH_COMM_WORLD, IERR)
 !
   IF (IPROC .EQ. 0) THEN
     ILMA_SEG_ALL(1:3*INSEGCELL,IL) = IRECV(1:3*INSEGCELL)
diff --git a/src/MNH/forc_squall_line.f90 b/src/MNH/forc_squall_line.f90
index f813c63af15f07777683da98590ad17d1aca8429..87ac9643848aa61edaec46d037aabca9461bbab3 100644
--- a/src/MNH/forc_squall_line.f90
+++ b/src/MNH/forc_squall_line.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2008-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for SCCS information
-!-----------------------------------------------------------------
-!      %Z% Lib:%F%, Version:%I%, Date:%D%, Last modified:%E%
-!-----------------------------------------------------------------
 !     ############################
       MODULE MODI_FORC_SQUALL_LINE
 !     ############################
@@ -51,6 +47,8 @@ END MODULE MODI_FORC_SQUALL_LINE
 !!    ------
 !!      J-P Pinty, Lab. Aerologie, 25/01/08 
 !!
+! Modifications:
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -82,7 +80,7 @@ INTEGER          :: JIBEG,JIEND    ! Loop indexes for the cooling area
 !
 ! SIZE OF THE COLD POOL
 !
-JIBEG = INT(XDUMMY4*FLOAT(SIZE(PDXHAT)))
+JIBEG = INT(XDUMMY4*REAL(SIZE(PDXHAT)))
 JIEND = JIBEG + NINT(XDUMMY3/PDXHAT(JIBEG))
 !
 DO JK = 1+JPVEXT,SIZE(PZHAT)-JPVEXT
diff --git a/src/MNH/free_atm_profile.f90 b/src/MNH/free_atm_profile.f90
index d4ae43d2aa19eddc034fb1df77ad6f75ee4d091e..631577f0f97398c35903ce6ca4b07a7c6645e944 100644
--- a/src/MNH/free_atm_profile.f90
+++ b/src/MNH/free_atm_profile.f90
@@ -86,6 +86,7 @@ END MODULE MODI_FREE_ATM_PROFILE
 !!      C.Lac  04/2016  Modification of the free atm gradient when the top of
 !!                      the model is too low
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -343,7 +344,7 @@ END DO
 !  modified
 !
 IWK_BL_TOP(:,:)=IK_BL_TOP(:,:)
-ZK_BL_TOP(:,:)=FLOAT(IK_BL_TOP(:,:))
+ZK_BL_TOP(:,:)=REAL(IK_BL_TOP(:,:))
 CALL MPPDB_CHECK2D(ZK_BL_TOP,"FREE_ATM_PROFILE:8.1:ZK_BL_TOP",PRECISION)
 !
 !!$DO JI=1,IIU
@@ -360,13 +361,13 @@ CALL MPPDB_CHECK2D(ZK_BL_TOP,"FREE_ATM_PROFILE:8.1:ZK_BL_TOP",PRECISION)
 !!$END DO
 !!$IK_BL_TOP(:,:)=IWK_BL_TOP(:,:)
 
-ZK_BL_TOP(:,:)=FLOAT(IK_BL_TOP(:,:))
+ZK_BL_TOP(:,:)=REAL(IK_BL_TOP(:,:))
 CALL MPPDB_CHECK2D(ZK_BL_TOP,"FREE_ATM_PROFILE:8.2:ZK_BL_TOP",PRECISION)
 !
 !*       8.2  spatial filtering is applied (4 times) for boundary layer top
 !             -------------------------------------------------------------
 !
-ZK_BL_TOP(:,:)=FLOAT(IK_BL_TOP(:,:))
+ZK_BL_TOP(:,:)=REAL(IK_BL_TOP(:,:))
 CALL PGDFILTER(ZK_BL_TOP(:,:),4)
 CALL MPPDB_CHECK2D(ZK_BL_TOP,"FREE_ATM_PROFILE:ZK_BL_TOP",PRECISION)
 IK_BL_TOP(:,:)=NINT(ZK_BL_TOP(:,:))
diff --git a/src/MNH/gamma_inc.f90 b/src/MNH/gamma_inc.f90
index 0de61815eb3d260b949afc31973f77bca6a96679..083bf6d471c7f9c91a0a537dc172b05491bfb3c6 100644
--- a/src/MNH/gamma_inc.f90
+++ b/src/MNH/gamma_inc.f90
@@ -61,6 +61,7 @@ END MODULE MODI_GAMMA_INC
 !!    -------------
 !!      Original     7/12/95
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !
 !*       0. DECLARATIONS
 !           ------------
@@ -117,7 +118,7 @@ IF( (PX.LT.PA+1.0) ) THEN
   JN = 1
 !
   LOOP_FRACTION: DO
-    ZAN = -FLOAT(JN)*(FLOAT(JN)-PA)
+    ZAN = -REAL(JN)*(REAL(JN)-PA)
     ZB = ZB + 2.0
     ZD = ZAN*ZD + ZB
     IF( ABS(ZD).LT.TINY(PX) ) THEN
diff --git a/src/MNH/gauher.f b/src/MNH/gauher.f
index fad1963384e9eb4df877b5b36a5a20bd6274b08c..d87de6c975c022f77d024938c10cb650b9060d20 100644
--- a/src/MNH/gauher.f
+++ b/src/MNH/gauher.f
@@ -1,7 +1,11 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!-----------------------------------------------------------------
       SUBROUTINE gauher(x,w,n)
       INTEGER n,MAXIT
       REAL w(n),x(n)
@@ -15,7 +19,7 @@ C
       m=(n+1)/2
       do 13 i=1,m
         if(i.eq.1)then
-          z=sqrt(float(2*n+1))-1.85575*(2*n+1)**(-.16667)
+          z=sqrt(real(2*n+1))-1.85575*(2*n+1)**(-.16667)
         else if(i.eq.2)then
           z=z-1.14*n**.426/z
         else if (i.eq.3)then
diff --git a/src/MNH/gaulag.f b/src/MNH/gaulag.f
index 1702c67567fd31e99a1377a9c4f8748c463dc5cf..f05491c50a40f4d24b23a1c7a9e797f8090e00f8 100644
--- a/src/MNH/gaulag.f
+++ b/src/MNH/gaulag.f
@@ -1,7 +1,11 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!-----------------------------------------------------------------
       SUBROUTINE gaulag(x,w,n,alf)
       INTEGER n,MAXIT
       REAL alf,w(n),x(n)
@@ -38,7 +42,7 @@ C
           if(abs(z-z1).le.EPS)goto 1
 12      continue
 1       x(i)=z
-        w(i)=-exp(gammln(alf+n)-gammln(float(n)))/(pp*n*p2)
+        w(i)=-exp(gammln(alf+n)-gammln(real(n)))/(pp*n*p2)
 13    continue
 C
 C NORMALISATION
diff --git a/src/MNH/hypser.f90 b/src/MNH/hypser.f90
index 75e1be79bce58a4e4656a389ea509e67d8188006..3a8bed13e8414d79e75eb4aa8d0b999aad0a36fb 100644
--- a/src/MNH/hypser.f90
+++ b/src/MNH/hypser.f90
@@ -63,6 +63,7 @@ END MODULE MODI_HYPSER
 !!    -------------
 !!      Original     31/12/96
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !
 !------------------------------------------------------------------------------
 !
@@ -99,7 +100,7 @@ ZZC = PC
 JFLAG = 0
 SERIE: DO JN = 1,5000
          ZFAC = ZFAC * ZZA * ZZB / ZZC
-         ZFAC = ZFAC * ZXH / FLOAT(JN)
+         ZFAC = ZFAC * ZXH / REAL(JN)
          PHYP = ZTEMP + ZFAC
          IF (ABS(PHYP-ZTEMP).LE.ZPREC) THEN
 	   JFLAG = 1
diff --git a/src/MNH/ice4_fast_rg.f90 b/src/MNH/ice4_fast_rg.f90
index ad8cf052571dfe52ac2374fafa8e40d187b0e2a7..28b9911e46bae0e1a32e0398d9c0a4eb12eab952 100644
--- a/src/MNH/ice4_fast_rg.f90
+++ b/src/MNH/ice4_fast_rg.f90
@@ -2,6 +2,7 @@
 !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 MODI_ICE4_FAST_RG
 INTERFACE
 SUBROUTINE ICE4_FAST_RG(KSIZE, LDSOFT, LDCOMPUTE, KRR, &
@@ -91,6 +92,7 @@ SUBROUTINE ICE4_FAST_RG(KSIZE, LDSOFT, LDCOMPUTE, KRR, &
 !!    MODIFICATIONS
 !!    -------------
 !!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !
 !
 !*      0. DECLARATIONS
@@ -392,23 +394,23 @@ ELSE
     !               in the geometrical set of (Lbda_g,Lbda_s) couplet use to
     !               tabulate the SDRYG-kernel
     !
-    ZVEC1(1:IGDRY)=MAX(1.00001, MIN(FLOAT(NDRYLBDAG)-0.00001,           &
+    ZVEC1(1:IGDRY)=MAX(1.00001, MIN(REAL(NDRYLBDAG)-0.00001,           &
 #ifndef MNH_BITREP
                           XDRYINTP1G*LOG(ZVEC1(1:IGDRY))+XDRYINTP2G))
 #else
                           XDRYINTP1G*BR_LOG(ZVEC1(1:IGDRY))+XDRYINTP2G))
 #endif
     IVEC1(1:IGDRY)=INT(ZVEC1(1:IGDRY) )
-    ZVEC1(1:IGDRY)=ZVEC1(1:IGDRY)-FLOAT(IVEC1(1:IGDRY))
+    ZVEC1(1:IGDRY)=ZVEC1(1:IGDRY)-REAL(IVEC1(1:IGDRY))
     !
-    ZVEC2(1:IGDRY)=MAX(1.00001, MIN( FLOAT(NDRYLBDAS)-0.00001,           &
+    ZVEC2(1:IGDRY)=MAX(1.00001, MIN( REAL(NDRYLBDAS)-0.00001,           &
 #ifndef MNH_BITREP
                           XDRYINTP1S*LOG(ZVEC2(1:IGDRY))+XDRYINTP2S))
 #else
                           XDRYINTP1S*BR_LOG(ZVEC2(1:IGDRY))+XDRYINTP2S))
 #endif
     IVEC2(1:IGDRY)=INT(ZVEC2(1:IGDRY))
-    ZVEC2(1:IGDRY)=ZVEC2(1:IGDRY)-FLOAT(IVEC2(1:IGDRY))
+    ZVEC2(1:IGDRY)=ZVEC2(1:IGDRY)-REAL(IVEC2(1:IGDRY))
     !
     !*       6.2.5  perform the bilinear interpolation of the normalized
     !               SDRYG-kernel
@@ -507,23 +509,23 @@ ELSE
     !               in the geometrical set of (Lbda_g,Lbda_r) couplet use to
     !               tabulate the RDRYG-kernel
     !
-    ZVEC1(1:IGDRY)=MAX(1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001,           &
+    ZVEC1(1:IGDRY)=MAX(1.00001, MIN( REAL(NDRYLBDAG)-0.00001,           &
 #ifndef MNH_BITREP
                           XDRYINTP1G*LOG(ZVEC1(1:IGDRY))+XDRYINTP2G))
 #else
                           XDRYINTP1G*BR_LOG(ZVEC1(1:IGDRY))+XDRYINTP2G))
 #endif
     IVEC1(1:IGDRY)=INT(ZVEC1(1:IGDRY))
-    ZVEC1(1:IGDRY)=ZVEC1(1:IGDRY)-FLOAT(IVEC1(1:IGDRY))
+    ZVEC1(1:IGDRY)=ZVEC1(1:IGDRY)-REAL(IVEC1(1:IGDRY))
     !
-    ZVEC2(1:IGDRY)=MAX(1.00001, MIN( FLOAT(NDRYLBDAR)-0.00001,           &
+    ZVEC2(1:IGDRY)=MAX(1.00001, MIN( REAL(NDRYLBDAR)-0.00001,           &
 #ifndef MNH_BITREP
                           XDRYINTP1R*LOG(ZVEC2(1:IGDRY))+XDRYINTP2R))
 #else
                           XDRYINTP1R*BR_LOG(ZVEC2(1:IGDRY))+XDRYINTP2R))
 #endif
     IVEC2(1:IGDRY)=INT(ZVEC2(1:IGDRY))
-    ZVEC2(1:IGDRY)=ZVEC2(1:IGDRY)-FLOAT(IVEC2(1:IGDRY))
+    ZVEC2(1:IGDRY)=ZVEC2(1:IGDRY)-REAL(IVEC2(1:IGDRY))
     !
     !*       6.2.10 perform the bilinear interpolation of the normalized
     !               RDRYG-kernel
diff --git a/src/MNH/ice4_fast_rh.f90 b/src/MNH/ice4_fast_rh.f90
index 5eaa5e4c7603e891ddc60be67ffbaca7d9f2639c..07f6275e9ad070aa50e6442a9216417f66bf3a57 100644
--- a/src/MNH/ice4_fast_rh.f90
+++ b/src/MNH/ice4_fast_rh.f90
@@ -2,6 +2,7 @@
 !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 MODI_ICE4_FAST_RH
 INTERFACE
 SUBROUTINE ICE4_FAST_RH(KSIZE, LDSOFT, LDCOMPUTE, LDWETG, &
@@ -81,6 +82,7 @@ SUBROUTINE ICE4_FAST_RH(KSIZE, LDSOFT, LDCOMPUTE, LDWETG, &
 !!    MODIFICATIONS
 !!    -------------
 !!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !
 !
 !*      0. DECLARATIONS
@@ -322,23 +324,23 @@ ELSE
     !               in the geometrical set of (Lbda_h,Lbda_s) couplet use to
     !               tabulate the SWETH-kernel
     !
-    ZVEC1(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAH)-0.00001,           &
+    ZVEC1(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAH)-0.00001,           &
 #ifndef MNH_BITREP
                           XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) )
 #else
                           XWETINTP1H * BR_LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) )
 #endif
     IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) )
-    ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) )
+    ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) )
     !
-    ZVEC2(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAS)-0.00001,           &
+    ZVEC2(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAS)-0.00001,           &
 #ifndef MNH_BITREP
                           XWETINTP1S * LOG( ZVEC2(1:IGWET) ) + XWETINTP2S ) )
 #else
                           XWETINTP1S * BR_LOG( ZVEC2(1:IGWET) ) + XWETINTP2S ) )
 #endif
     IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) )
-    ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) )
+    ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) )
     !
     !*       7.2.5  perform the bilinear interpolation of the normalized
     !               SWETH-kernel
@@ -436,23 +438,23 @@ ELSE
     !               in the geometrical set of (Lbda_h,Lbda_g) couplet use to
     !               tabulate the GWETH-kernel
     !
-    ZVEC1(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAG)-0.00001,           &
+    ZVEC1(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAG)-0.00001,           &
 #ifndef MNH_BITREP
                           XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) )
 #else
                           XWETINTP1H * BR_LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) )
 #endif
     IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) )
-    ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) )
+    ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) )
     !
-    ZVEC2(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAG)-0.00001,           &
+    ZVEC2(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAG)-0.00001,           &
 #ifndef MNH_BITREP
                           XWETINTP1G * LOG( ZVEC2(1:IGWET) ) + XWETINTP2G ) )
 #else
                           XWETINTP1G * BR_LOG( ZVEC2(1:IGWET) ) + XWETINTP2G ) )
 #endif
     IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) )
-    ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) )
+    ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) )
     !
     !*       7.2.10 perform the bilinear interpolation of the normalized
     !               GWETH-kernel
@@ -555,23 +557,23 @@ ELSE
     !               in the geometrical set of (Lbda_h,Lbda_r) couplet use to
     !               tabulate the RWETH-kernel
     !
-    ZVEC1(1:IGWET)=MAX(1.00001, MIN( FLOAT(NWETLBDAH)-0.00001,           &
+    ZVEC1(1:IGWET)=MAX(1.00001, MIN( REAL(NWETLBDAH)-0.00001,           &
 #ifndef MNH_BITREP
                           XWETINTP1H*LOG(ZVEC1(1:IGWET))+XWETINTP2H))
 #else
                           XWETINTP1H*BR_LOG(ZVEC1(1:IGWET))+XWETINTP2H))
 #endif
     IVEC1(1:IGWET)=INT(ZVEC1(1:IGWET))
-    ZVEC1(1:IGWET)=ZVEC1(1:IGWET)-FLOAT(IVEC1(1:IGWET))
+    ZVEC1(1:IGWET)=ZVEC1(1:IGWET)-REAL(IVEC1(1:IGWET))
     !
-    ZVEC2(1:IGWET)=MAX(1.00001, MIN( FLOAT(NWETLBDAR)-0.00001,           &
+    ZVEC2(1:IGWET)=MAX(1.00001, MIN( REAL(NWETLBDAR)-0.00001,           &
 #ifndef MNH_BITREP
                           XWETINTP1R*LOG(ZVEC2(1:IGWET))+XWETINTP2R))
 #else
                           XWETINTP1R*BR_LOG(ZVEC2(1:IGWET))+XWETINTP2R))
 #endif
     IVEC2(1:IGWET)=INT(ZVEC2(1:IGWET))
-    ZVEC2(1:IGWET)=ZVEC2(1:IGWET)-FLOAT(IVEC2(1:IGWET))
+    ZVEC2(1:IGWET)=ZVEC2(1:IGWET)-REAL(IVEC2(1:IGWET))
     !
     !*       7.2.14 perform the bilinear interpolation of the normalized
     !               RWETH-kernel
diff --git a/src/MNH/ice4_fast_rs.f90 b/src/MNH/ice4_fast_rs.f90
index ce5262a0cd0454e1c5a79cbe1886a7daded00b82..93a2d4384ae9dd4c59374a2473e0ede0ae0fbee0 100644
--- a/src/MNH/ice4_fast_rs.f90
+++ b/src/MNH/ice4_fast_rs.f90
@@ -2,6 +2,7 @@
 !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 MODI_ICE4_FAST_RS
 INTERFACE
 SUBROUTINE ICE4_FAST_RS(KSIZE, LDSOFT, LDCOMPUTE, &
@@ -74,6 +75,7 @@ SUBROUTINE ICE4_FAST_RS(KSIZE, LDSOFT, LDCOMPUTE, &
 !!    MODIFICATIONS
 !!    -------------
 !!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !
 !
 !*      0. DECLARATIONS
@@ -292,14 +294,14 @@ ELSE
     !               set of Lbda_s used to tabulate some moments of the incomplete
     !               gamma function
     !
-    ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( FLOAT(NGAMINC)-0.00001,           &
+    ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( REAL(NGAMINC)-0.00001,           &
 #ifndef MNH_BITREP
                           XRIMINTP1 * LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) )
 #else
                           XRIMINTP1 * BR_LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) )
 #endif
     IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) )
-    ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) )
+    ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) )
     !
     !        5.1.3  perform the linear interpolation of the normalized
     !               "2+XDS"-moment of the incomplete gamma function
@@ -475,23 +477,23 @@ ELSE
     !               in the geometrical set of (Lbda_s,Lbda_r) couplet use to
     !               tabulate the RACCSS-kernel
     !
-    ZVEC1(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAS)-0.00001,           &
+    ZVEC1(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAS)-0.00001,           &
 #ifndef MNH_BITREP
                           XACCINTP1S * LOG( ZVEC1(1:IGACC) ) + XACCINTP2S ) )
 #else
                           XACCINTP1S * BR_LOG( ZVEC1(1:IGACC) ) + XACCINTP2S ) )
 #endif
     IVEC1(1:IGACC) = INT( ZVEC1(1:IGACC) )
-    ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - FLOAT( IVEC1(1:IGACC) )
+    ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - REAL( IVEC1(1:IGACC) )
     !
-    ZVEC2(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAR)-0.00001,           &
+    ZVEC2(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAR)-0.00001,           &
 #ifndef MNH_BITREP
                           XACCINTP1R * LOG( ZVEC2(1:IGACC) ) + XACCINTP2R ) )
 #else
                           XACCINTP1R * BR_LOG( ZVEC2(1:IGACC) ) + XACCINTP2R ) )
 #endif
     IVEC2(1:IGACC) = INT( ZVEC2(1:IGACC) )
-    ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - FLOAT( IVEC2(1:IGACC) )
+    ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - REAL( IVEC2(1:IGACC) )
     !
     !        5.2.3  perform the bilinear interpolation of the normalized
     !               RACCSS-kernel
diff --git a/src/MNH/ice4_rsrimcg_old.f90 b/src/MNH/ice4_rsrimcg_old.f90
index 9652df7e39ea6d1951a884ad29520b99fd64727a..e015f206491f27d7a1da3ad3a49a13d59a39476c 100644
--- a/src/MNH/ice4_rsrimcg_old.f90
+++ b/src/MNH/ice4_rsrimcg_old.f90
@@ -2,6 +2,7 @@
 !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 MODI_ICE4_RSRIMCG_OLD
 INTERFACE
 SUBROUTINE ICE4_RSRIMCG_OLD(KSIZE, ODSOFT, ODCOMPUTE, &
@@ -41,6 +42,7 @@ SUBROUTINE ICE4_RSRIMCG_OLD(KSIZE, ODSOFT, ODCOMPUTE, &
 !!    MODIFICATIONS
 !!    -------------
 !!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !
 !
 !*      0. DECLARATIONS
@@ -147,14 +149,14 @@ IF(.NOT. GDSOFT) THEN
     !               set of Lbda_s used to tabulate some moments of the incomplete
     !               gamma function
     !
-    ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( FLOAT(NGAMINC)-0.00001,           &
+    ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( REAL(NGAMINC)-0.00001,           &
 #ifndef MNH_BITREP
                           XRIMINTP1 * LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) )
 #else
                           XRIMINTP1 * BR_LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) )
 #endif
     IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) )
-    ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) )
+    ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) )
 
     !
     !        5.1.5  perform the linear interpolation of the normalized
diff --git a/src/MNH/ice4_sedimentation_split_old.f90 b/src/MNH/ice4_sedimentation_split_old.f90
index 42f2b833bc2d97d5c00fb6e20445c3a1d286e2af..777b82a304f3bbd18c04c4d8098bd651245a6b97 100644
--- a/src/MNH/ice4_sedimentation_split_old.f90
+++ b/src/MNH/ice4_sedimentation_split_old.f90
@@ -68,6 +68,7 @@ SUBROUTINE ICE4_SEDIMENTATION_SPLIT_OLD(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE,
 !!    -------------
 !!
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !
 !
 !*      0. DECLARATIONS
@@ -151,7 +152,7 @@ INTEGER :: JJ, JK, JN, JL
 !        O. Initialization of for sedimentation
 !
 ZINVTSTEP=1./PTSTEP
-ZTSPLITR=PTSTEP/FLOAT(KSPLITR)
+ZTSPLITR=PTSTEP/REAL(KSPLITR)
 IF (OSEDIC) PINPRC (:,:) = 0.
 PINPRR (:,:) = 0.
 PINPRI (:,:) = 0.
diff --git a/src/MNH/ini_bikhardtn.f90 b/src/MNH/ini_bikhardtn.f90
index 8f776f74307e08a95c7e5d180b023cb0da3aedb4..8320b0a0b95801c352ceb47c05b2c33278582579 100644
--- a/src/MNH/ini_bikhardtn.f90
+++ b/src/MNH/ini_bikhardtn.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 interpol 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !######################## 
 MODULE MODI_INI_BIKHARDT_n
 !########################
@@ -68,7 +63,8 @@ END MODULE MODI_INI_BIKHARDT_n
 !!    -------------
 !!
 !!      Original     10/06/96 
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -121,13 +117,13 @@ ALLOCATE (XBFY4(KDYRATIO))
 !*       2.     Bikhardt interpolation coefficients computation :
 !
 DO JI = 1,KDXRATIO
-  ZX = FLOAT(JI-1)/FLOAT(KDXRATIO)
+  ZX = REAL(JI-1)/REAL(KDXRATIO)
   XBFX1(JI) = -0.5*ZX*ZX*ZX  +    ZX*ZX  -0.5*ZX
   XBFX2(JI) =  1.5*ZX*ZX*ZX  -2.5*ZX*ZX           +1.
   XBFX3(JI) = -1.5*ZX*ZX*ZX  +2.0*ZX*ZX  +0.5*ZX
   XBFX4(JI) =  0.5*ZX*ZX*ZX  -0.5*ZX*ZX
 !
-  IF (MOD(KDXRATIO,2).EQ.0)  ZX = ZX + .5/FLOAT(KDXRATIO)
+  IF (MOD(KDXRATIO,2).EQ.0)  ZX = ZX + .5/REAL(KDXRATIO)
   XBMX1(JI) = -0.5*ZX*ZX*ZX  +    ZX*ZX  -0.5*ZX
   XBMX2(JI) =  1.5*ZX*ZX*ZX  -2.5*ZX*ZX           +1.
   XBMX3(JI) = -1.5*ZX*ZX*ZX  +2.0*ZX*ZX  +0.5*ZX
@@ -136,13 +132,13 @@ DO JI = 1,KDXRATIO
 END DO
 !
 DO JJ = 1,KDYRATIO
-  ZY = FLOAT(JJ-1)/FLOAT(KDYRATIO)
+  ZY = REAL(JJ-1)/REAL(KDYRATIO)
   XBFY1(JJ) = -0.5*ZY*ZY*ZY  +    ZY*ZY  -0.5*ZY
   XBFY2(JJ) =  1.5*ZY*ZY*ZY  -2.5*ZY*ZY           +1.
   XBFY3(JJ) = -1.5*ZY*ZY*ZY  +2.0*ZY*ZY  +0.5*ZY
   XBFY4(JJ) =  0.5*ZY*ZY*ZY  -0.5*ZY*ZY
 !
-  IF (MOD(KDYRATIO,2).EQ.0)  ZY = ZY + .5/FLOAT(KDYRATIO)
+  IF (MOD(KDYRATIO,2).EQ.0)  ZY = ZY + .5/REAL(KDYRATIO)
   XBMY1(JJ) = -0.5*ZY*ZY*ZY  +    ZY*ZY  -0.5*ZY
   XBMY2(JJ) =  1.5*ZY*ZY*ZY  -2.5*ZY*ZY           +1.
   XBMY3(JJ) = -1.5*ZY*ZY*ZY  +2.0*ZY*ZY  +0.5*ZY
diff --git a/src/MNH/ini_cloud.f90 b/src/MNH/ini_cloud.f90
index e9221f59837d0952c9695a916ff7f238fbe6bb48..2cb05cb5cc8aa23e9e48cda9bc43635f90142ce8 100644
--- a/src/MNH/ini_cloud.f90
+++ b/src/MNH/ini_cloud.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 init 2007/02/19 11:21:57
-!-----------------------------------------------------------------
 !     ######################
        MODULE MODI_INI_CLOUD 
 !     ######################
@@ -92,6 +87,7 @@ END MODULE MODI_INI_CLOUD
 !!      (J.Stein)   30/06/95  use 2*PTSTEP to compute the number of small 
 !!                            timesteps for the rain sedimentation
 !!      (N. Asencio) 11/08/98 parallel code: PDZMIN is computed outside in ini_modeln
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -204,7 +200,7 @@ ZVTRMAX = 10.
 !               -------------------------------------------------
 KSPLITR = 1
 SPLIT : DO
-  ZT = PTSTEP / FLOAT(KSPLITR)
+  ZT = PTSTEP / REAL(KSPLITR)
   IF ( ZT * ZVTRMAX / PDZMIN .LT. 1.) EXIT SPLIT
   KSPLITR = KSPLITR + 1
 END DO SPLIT
diff --git a/src/MNH/ini_ice_c1r3.f90 b/src/MNH/ini_ice_c1r3.f90
index 5240fc5d409bfcce72945ff924096ee08ad71dcd..b0a35554a88837b36dc5ae44119426abe6a482a6 100644
--- a/src/MNH/ini_ice_c1r3.f90
+++ b/src/MNH/ini_ice_c1r3.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2000-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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.
@@ -89,7 +89,8 @@ END MODULE MODI_INI_ICE_C1R3
 !!      J.-P. Pinty 05/04/2002 Add computation of the effective radius
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -207,7 +208,7 @@ END IF
 !
 KSPLITG = 1
 SPLIT : DO
-  ZT = 2.* PTSTEP / FLOAT(KSPLITG)
+  ZT = 2.* PTSTEP / REAL(KSPLITG)
   IF ( ZT * ZVTRMAX / PDZMIN .LT. 1.) EXIT SPLIT
   KSPLITG = KSPLITG + 1
 END DO SPLIT
@@ -627,7 +628,7 @@ END IF
 NGAMINC = 80
 XGAMINC_BOUND_MIN = 1.0E-1 ! Minimal value of (Lbda * D_cs^lim)**alpha
 XGAMINC_BOUND_MAX = 1.0E7  ! Maximal value of (Lbda * D_cs^lim)**alpha
-ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/FLOAT(NGAMINC-1))
+ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/REAL(NGAMINC-1))
 !
 ALLOCATE( XGAMINC_RIM1(NGAMINC) )
 ALLOCATE( XGAMINC_RIM2(NGAMINC) )
@@ -656,7 +657,7 @@ XHM_FACTS = XHM_YIELD*(XHM_COLLCS/XCOLCS)
 !
 XGAMINC_HMC_BOUND_MIN = 1.0E-3 ! Min value of (Lbda * (12,25) microns)**alpha
 XGAMINC_HMC_BOUND_MAX = 1.0E5  ! Max value of (Lbda * (12,25) microns)**alpha
-ZRATE = EXP(LOG(XGAMINC_HMC_BOUND_MAX/XGAMINC_HMC_BOUND_MIN)/FLOAT(NGAMINC-1))
+ZRATE = EXP(LOG(XGAMINC_HMC_BOUND_MAX/XGAMINC_HMC_BOUND_MIN)/REAL(NGAMINC-1))
 !
 ALLOCATE( XGAMINC_HMC(NGAMINC) )
 !
@@ -691,13 +692,13 @@ XLBSACCR3   =                          MOMG(XALPHAS,XNUS,XBS+2.)
 NACCLBDAS = 40
 XACCLBDAS_MIN = 5.0E1 ! Minimal value of Lbda_s to tabulate XKER_RACCS
 XACCLBDAS_MAX = 5.0E5 ! Maximal value of Lbda_s to tabulate XKER_RACCS
-ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/FLOAT(NACCLBDAS-1)
+ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/REAL(NACCLBDAS-1)
 XACCINTP1S = 1.0 / ZRATE
 XACCINTP2S = 1.0 - LOG( XACCLBDAS_MIN ) / ZRATE
 NACCLBDAR = 40
 XACCLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RACCS
 XACCLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RACCS
-ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/FLOAT(NACCLBDAR-1)
+ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/REAL(NACCLBDAR-1)
 XACCINTP1R = 1.0 / ZRATE
 XACCINTP2R = 1.0 - LOG( XACCLBDAR_MIN ) / ZRATE
 !
@@ -900,19 +901,19 @@ XLBRDRYG3   =                          MOMG(XALPHAR,XNUR,5.)
 NDRYLBDAR = 40
 XDRYLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RDRYG
 XDRYLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RDRYG
-ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/FLOAT(NDRYLBDAR-1)
+ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/REAL(NDRYLBDAR-1)
 XDRYINTP1R = 1.0 / ZRATE
 XDRYINTP2R = 1.0 - LOG( XDRYLBDAR_MIN ) / ZRATE
 NDRYLBDAS = 80
 XDRYLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SDRYG
 XDRYLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SDRYG
-ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/FLOAT(NDRYLBDAS-1)
+ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/REAL(NDRYLBDAS-1)
 XDRYINTP1S = 1.0 / ZRATE
 XDRYINTP2S = 1.0 - LOG( XDRYLBDAS_MIN ) / ZRATE
 NDRYLBDAG = 40
 XDRYLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG
 XDRYLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG
-ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/FLOAT(NDRYLBDAG-1)
+ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/REAL(NDRYLBDAG-1)
 XDRYINTP1G = 1.0 / ZRATE
 XDRYINTP2G = 1.0 - LOG( XDRYLBDAG_MIN ) / ZRATE
 !
diff --git a/src/MNH/ini_lima.f90 b/src/MNH/ini_lima.f90
index 8f4671fb8ba6ed997c1d0c1e5bae5b164231d48d..58257019d57ec24e9097d95dc40c878da1e07e01 100644
--- a/src/MNH/ini_lima.f90
+++ b/src/MNH/ini_lima.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !      ####################
@@ -44,7 +44,8 @@ END MODULE MODI_INI_LIMA
 !!    -------------
 !!      Original             ??/??/13 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -102,7 +103,7 @@ ZVTRMAX(7) = 30.         ! Maximum hail fall speed
 DO JI=2,7
    NSPLITSED(JI) = 1
    SPLIT : DO
-      ZT = PTSTEP / FLOAT(NSPLITSED(JI))
+      ZT = PTSTEP / REAL(NSPLITSED(JI))
       IF ( ZT * ZVTRMAX(JI) / PDZMIN < 1.0) EXIT SPLIT
       NSPLITSED(JI) = NSPLITSED(JI) + 1
    END DO SPLIT
@@ -112,7 +113,7 @@ END DO
 !
 KSPLITR = 1
 SPLITR : DO
-   ZT = PTSTEP / FLOAT(KSPLITR)
+   ZT = PTSTEP / REAL(KSPLITR)
    IF ( ZT * ZVTRMAX(7) / PDZMIN < 1.0) EXIT SPLITR
    KSPLITR = KSPLITR + 1
 END DO SPLITR
@@ -122,7 +123,7 @@ END DO SPLITR
 !
 KSPLITG = 1
 SPLITG : DO
-   ZT = 2.* PTSTEP / FLOAT(KSPLITG)
+   ZT = 2.* PTSTEP / REAL(KSPLITG)
    IF ( ZT * ZVTRMAX(7) / PDZMIN .LT. 1.) EXIT SPLITG
    KSPLITG = KSPLITG + 1
 END DO SPLITG
diff --git a/src/MNH/ini_lima_cold_mixed.f90 b/src/MNH/ini_lima_cold_mixed.f90
index 97921618141f0c60e6b440e82c53961baa5903e8..cb427cdb434982b229095adb417eee3d1071b73e 100644
--- a/src/MNH/ini_lima_cold_mixed.f90
+++ b/src/MNH/ini_lima_cold_mixed.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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.
@@ -40,7 +40,8 @@ END MODULE MODI_INI_LIMA_COLD_MIXED
 !!      Original             ??/??/13 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -685,7 +686,7 @@ END IF
 NGAMINC = 80
 XGAMINC_BOUND_MIN = 1.0E-1 ! Minimal value of (Lbda * D_cs^lim)**alpha
 XGAMINC_BOUND_MAX = 1.0E7  ! Maximal value of (Lbda * D_cs^lim)**alpha
-ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/FLOAT(NGAMINC-1))
+ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/REAL(NGAMINC-1))
 !
 ALLOCATE( XGAMINC_RIM1(NGAMINC) )
 ALLOCATE( XGAMINC_RIM2(NGAMINC) )
@@ -714,7 +715,7 @@ XHM_FACTS = XHM_YIELD*(XHM_COLLCS/XCOLCS)
 !
 XGAMINC_HMC_BOUND_MIN = 1.0E-3 ! Min value of (Lbda * (12,25) microns)**alpha
 XGAMINC_HMC_BOUND_MAX = 1.0E5  ! Max value of (Lbda * (12,25) microns)**alpha
-ZRATE = EXP(LOG(XGAMINC_HMC_BOUND_MAX/XGAMINC_HMC_BOUND_MIN)/FLOAT(NGAMINC-1))
+ZRATE = EXP(LOG(XGAMINC_HMC_BOUND_MAX/XGAMINC_HMC_BOUND_MIN)/REAL(NGAMINC-1))
 !
 ALLOCATE( XGAMINC_HMC(NGAMINC) )
 !
@@ -751,13 +752,13 @@ XLBSACCR3   =                          MOMG(XALPHAS,XNUS,XBS+2.)
 NACCLBDAS = 40
 XACCLBDAS_MIN = 5.0E1 ! Minimal value of Lbda_s to tabulate XKER_RACCS
 XACCLBDAS_MAX = 5.0E5 ! Maximal value of Lbda_s to tabulate XKER_RACCS
-ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/FLOAT(NACCLBDAS-1)
+ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/REAL(NACCLBDAS-1)
 XACCINTP1S = 1.0 / ZRATE
 XACCINTP2S = 1.0 - LOG( XACCLBDAS_MIN ) / ZRATE
 NACCLBDAR = 40
 XACCLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RACCS
 XACCLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RACCS
-ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/FLOAT(NACCLBDAR-1)
+ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/REAL(NACCLBDAR-1)
 XACCINTP1R = 1.0 / ZRATE
 XACCINTP2R = 1.0 - LOG( XACCLBDAR_MIN ) / ZRATE
 !
@@ -961,19 +962,19 @@ XLBRDRYG3   =                          MOMG(XALPHAR,XNUR,5.)
 NDRYLBDAR = 40
 XDRYLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RDRYG
 XDRYLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RDRYG
-ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/FLOAT(NDRYLBDAR-1)
+ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/REAL(NDRYLBDAR-1)
 XDRYINTP1R = 1.0 / ZRATE
 XDRYINTP2R = 1.0 - LOG( XDRYLBDAR_MIN ) / ZRATE
 NDRYLBDAS = 80
 XDRYLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SDRYG
 XDRYLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SDRYG
-ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/FLOAT(NDRYLBDAS-1)
+ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/REAL(NDRYLBDAS-1)
 XDRYINTP1S = 1.0 / ZRATE
 XDRYINTP2S = 1.0 - LOG( XDRYLBDAS_MIN ) / ZRATE
 NDRYLBDAG = 40
 XDRYLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG
 XDRYLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG
-ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/FLOAT(NDRYLBDAG-1)
+ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/REAL(NDRYLBDAG-1)
 XDRYINTP1G = 1.0 / ZRATE
 XDRYINTP2G = 1.0 - LOG( XDRYLBDAG_MIN ) / ZRATE
 !
@@ -1144,19 +1145,19 @@ XLBGWETH3   =                          MOMG(XALPHAG,XNUG,XBG+2.)
 NWETLBDAS = 80
 XWETLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SWETH
 XWETLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SWETH
-ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN)/FLOAT(NWETLBDAS-1)
+ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN)/REAL(NWETLBDAS-1)
 XWETINTP1S = 1.0 / ZRATE
 XWETINTP2S = 1.0 - LOG( XWETLBDAS_MIN ) / ZRATE
 NWETLBDAG = 40
 XWETLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_GWETH
 XWETLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_GWETH
-ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN)/FLOAT(NWETLBDAG-1)
+ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN)/REAL(NWETLBDAG-1)
 XWETINTP1G = 1.0 / ZRATE
 XWETINTP2G = 1.0 - LOG( XWETLBDAG_MIN ) / ZRATE
 NWETLBDAH = 40
 XWETLBDAH_MIN = 1.0E3 ! Min value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH
 XWETLBDAH_MAX = 1.0E7 ! Max value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH
-ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN)/FLOAT(NWETLBDAH-1)
+ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN)/REAL(NWETLBDAH-1)
 XWETINTP1H = 1.0 / ZRATE
 XWETINTP2H = 1.0 - LOG( XWETLBDAH_MIN ) / ZRATE
 !
diff --git a/src/MNH/ini_lima_warm.f90 b/src/MNH/ini_lima_warm.f90
index b369cbcecd27510bb36d92345174f8b23beec404..0afeea4928ba710840a31261e0f7d62fa44e73c1 100644
--- a/src/MNH/ini_lima_warm.f90
+++ b/src/MNH/ini_lima_warm.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !      #########################
        MODULE MODI_INI_LIMA_WARM
@@ -37,7 +37,8 @@ END MODULE MODI_INI_LIMA_WARM
 !!    -------------
 !!      Original             ??/??/13 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -243,12 +244,12 @@ ALLOCATE (XHYPF32( NHYP, NMOD_CCN ))
 !
 ZSMIN = 1.0E-5  ! Minimum supersaturation set at 0.001 % 
 ZSMAX = 5.0E-2  ! Maximum supersaturation set at 5 %
-XHYPINTP1 = FLOAT(NHYP-1)/LOG(ZSMAX/ZSMIN)
-XHYPINTP2 = FLOAT(NHYP)-XHYPINTP1*LOG(ZSMAX)
+XHYPINTP1 = REAL(NHYP-1)/LOG(ZSMAX/ZSMIN)
+XHYPINTP2 = REAL(NHYP)-XHYPINTP1*LOG(ZSMAX)
 !
 DO JMOD = 1,NMOD_CCN 
    DO J1 = 1,NHYP
-      ZSS =ZSMAX*(ZSMIN/ZSMAX)**(FLOAT(NHYP-J1)/FLOAT(NHYP-1))
+      ZSS =ZSMAX*(ZSMIN/ZSMAX)**(REAL(NHYP-J1)/REAL(NHYP-1))
       XHYPF12(J1,JMOD) = HYPGEO(XMUHEN_MULTI(JMOD),0.5*XKHEN_MULTI(JMOD),&
                                 0.5*XKHEN_MULTI(JMOD)+1.0,XBETAHEN_MULTI(JMOD),ZSS)
       XHYPF32(J1,JMOD) = HYPGEO(XMUHEN_MULTI(JMOD),0.5*XKHEN_MULTI(JMOD),&
@@ -258,7 +259,7 @@ ENDDO
 !
 NAHEN = 81 ! Tabulation for each Kelvin degree in the range XTT-40 to XTT+40
 XAHENINTP1 = 1.0
-XAHENINTP2 = 0.5*FLOAT(NAHEN-1) - XTT
+XAHENINTP2 = 0.5*REAL(NAHEN-1) - XTT
 !
 !		Compute the tabulation of function of T :
 !
@@ -279,7 +280,7 @@ ALLOCATE (XPSI1(NAHEN))
 ALLOCATE (XPSI3(NAHEN))
 XCSTHEN = 1.0 / ( XRHOLW*2.0*XPI )
 DO J1 = 1,NAHEN
-   ZTT = XTT + FLOAT(J1-(NAHEN-1)/2)                                         ! T
+   ZTT = XTT + REAL(J1-(NAHEN-1)/2)                                          ! T
    ZLV = XLVTT+(XCPV-XCL)*(ZTT-XTT)                                          ! Lv
    XPSI1(J1) = (XG/(XRD*ZTT))*(XMV*ZLV/(XMD*XCPD*ZTT)-1.)                    ! Psi1
    XPSI3(J1) = -1*XMV*ZLV/(XMD*XRD*(ZTT**2))                                 ! Psi3
diff --git a/src/MNH/ini_param_elec.f90 b/src/MNH/ini_param_elec.f90
index ca55b76640b5279dfaa075dbc6a4c3b278d89bba..bdbd3c6d90293a6d4fde0fd28e4d9187e4712642 100644
--- a/src/MNH/ini_param_elec.f90
+++ b/src/MNH/ini_param_elec.f90
@@ -84,7 +84,8 @@ END MODULE MODI_INI_PARAM_ELEC
 !!        J.-P. Pinty jan 2015  tabulate the equations for Saunders
 !!        J. Escobar 8/01/2016 bug , missing YDIR='XY' in READ 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*	0.	DECLARATIONS
@@ -564,7 +565,7 @@ IF (CNI_CHARGING == 'SAUN1' .OR. CNI_CHARGING == 'SAUN2' .OR.  &
   ALLOCATE(ZT(NIND_TEMP+1))    ! Kelvin
   ALLOCATE(ZLWCC(NIND_TEMP+1))
   DO JTEMP = 1, NIND_TEMP+1
-    ZT(JTEMP)=1.0-FLOAT(JTEMP)+XTT
+    ZT(JTEMP)=1.0-REAL(JTEMP)+XTT
   END DO
   ZLWCC(:) = MIN( MAX( -0.49 + 6.64E-2*(XTT-ZT(:)),0.22 ),1.1 )   ! (g m^-3)
   ALLOCATE(ZEW(NIND_LWC+1))
@@ -574,13 +575,13 @@ IF (CNI_CHARGING == 'SAUN1' .OR. CNI_CHARGING == 'SAUN2' .OR.  &
 !                                  0.10 to 0.90 every 0.10 (9 values)
 !                                  1.00 to 10.0 every 1.00 (10 values)
   DO JLWC = 1, 9
-    ZEW(JLWC)=0.01*FLOAT(JLWC)
+    ZEW(JLWC)=0.01*REAL(JLWC)
   END DO
   DO JLWC = 10, 18
-    ZEW(JLWC)=0.1 + 0.1*FLOAT(JLWC-10)
+    ZEW(JLWC)=0.1 + 0.1*REAL(JLWC-10)
   END DO
   DO JLWC = 19, NIND_LWC+1
-    ZEW(JLWC)=1.0 + FLOAT(JLWC-19)
+    ZEW(JLWC)=1.0 + REAL(JLWC-19)
   END DO
 !
 !
@@ -701,17 +702,17 @@ IF (CNI_CHARGING == 'TEEWC' .OR. CNI_CHARGING == 'TERAR') THEN
   ALLOCATE(ZT(NIND_TEMP+1))    ! Kelvin
   ALLOCATE(ZEW(NIND_LWC+1))
   DO JTEMP = 1, NIND_TEMP+1
-    ZT(JTEMP) = 1.0 - FLOAT(JTEMP) + XTT
+    ZT(JTEMP) = 1.0 - REAL(JTEMP) + XTT
   END DO
 
   DO JLWC = 1, 9
-    ZEW(JLWC) = 0.01 * FLOAT(JLWC)
+    ZEW(JLWC) = 0.01 * REAL(JLWC)
   END DO
   DO JLWC = 10, 18
-    ZEW(JLWC) = 0.1 + 0.1 * FLOAT(JLWC-10)
+    ZEW(JLWC) = 0.1 + 0.1 * REAL(JLWC-10)
   END DO
   DO JLWC = 19, NIND_LWC+1
-    ZEW(JLWC) = 1.0 + FLOAT(JLWC-19)
+    ZEW(JLWC) = 1.0 + REAL(JLWC-19)
   END DO
 !
   XTAKA_TM(:,:) = 0.0
diff --git a/src/MNH/ini_radiations.f90 b/src/MNH/ini_radiations.f90
index 640467fbb885d614b658c43189eca2c4d55901ad..c47b99910f656e4f0b4d024e9482bc6df23951c7 100644
--- a/src/MNH/ini_radiations.f90
+++ b/src/MNH/ini_radiations.f90
@@ -108,6 +108,7 @@ END MODULE MODI_INI_RADIATIONS
 !!                               but the day stays the same during the whole run 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -205,18 +206,18 @@ DO JI=1,11
 END DO
 IF ( LFIX_DAT ) THEN   ! Ajout PP 
    IF( MOD(TPDTEXP%TDATE%YEAR,4).EQ.0 ) THEN
-    ZDATE = FLOAT(TPDTEXP%TDATE%DAY +   IBIS(TPDTEXP%TDATE%MONTH-1)) - 1
+    ZDATE = REAL(TPDTEXP%TDATE%DAY +   IBIS(TPDTEXP%TDATE%MONTH-1)) - 1
      ZAD = 2.0*XPI*ZDATE/366.0
    ELSE
-     ZDATE = FLOAT(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1
+     ZDATE = REAL(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1
      ZAD = 2.0*XPI*ZDATE/365.0
    END IF
 ELSE
    IF( MOD(TPDTCUR%TDATE%YEAR,4).EQ.0 ) THEN
-     ZDATE = FLOAT(TPDTCUR%TDATE%DAY +   IBIS(TPDTCUR%TDATE%MONTH-1)) - 1
+     ZDATE = REAL(TPDTCUR%TDATE%DAY +   IBIS(TPDTCUR%TDATE%MONTH-1)) - 1
      ZAD = 2.0*XPI*ZDATE/366.0
    ELSE
-     ZDATE = FLOAT(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1
+     ZDATE = REAL(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1
      ZAD = 2.0*XPI*ZDATE/365.0
    END IF
 END IF
diff --git a/src/MNH/ini_radiations_ecmwf.f90 b/src/MNH/ini_radiations_ecmwf.f90
index cf0ba2ebcb1d701e3940dabaae6285ee7447d037..cf73ab385ef0dd904338bd818d644d3346b48fd2 100644
--- a/src/MNH/ini_radiations_ecmwf.f90
+++ b/src/MNH/ini_radiations_ecmwf.f90
@@ -172,6 +172,7 @@ END MODULE MODI_INI_RADIATIONS_ECMWF
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
 !  P. Wautelet 14/02/2019: remove HINIFILE dummy argument
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -326,7 +327,7 @@ CALL INI_STAND_ATM
 IF(.NOT.LCARTESIAN) THEN
   ! . global sum
   ZLATMEAN = SUM_DD_R2_ll( PLAT(IIB:IIE,IJB:IJE))
-  ZLATMEAN = ZLATMEAN /FLOAT(IIMAX_ll*IJMAX_ll)
+  ZLATMEAN = ZLATMEAN /REAL(IIMAX_ll*IJMAX_ll)
 ELSE 
   ZLATMEAN = XLAT0
 ENDIF
diff --git a/src/MNH/ini_rain_c2r2.f90 b/src/MNH/ini_rain_c2r2.f90
index ad3c39efbcb9721411306f6367aa634f498e3deb..b436b832df4291f0fcfe3b238435df0f4a5bc845 100644
--- a/src/MNH/ini_rain_c2r2.f90
+++ b/src/MNH/ini_rain_c2r2.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !      #########################
@@ -89,6 +89,7 @@ END MODULE MODI_INI_RAIN_C2R2
 !!      G.Delautier 09/2014   fusion MODD_RAIN_C2R2_PARAM et MODD_RAIN_KHKO_PARAM
 !!      M.Mazoyer   10/2016 Constants for Droplet sedimentation adapted to fog for KHKO
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -173,7 +174,7 @@ ZVTRMAX = 30.
 !
 KSPLITR = 1
 SPLIT : DO
-  ZT = PTSTEP / FLOAT(KSPLITR)
+  ZT = PTSTEP / REAL(KSPLITR)
   IF ( ZT * ZVTRMAX / PDZMIN < 1.0) EXIT SPLIT
   KSPLITR = KSPLITR + 1
 END DO SPLIT
@@ -353,12 +354,12 @@ ALLOCATE (XHYPF32(NHYP))
 !
 ZSMIN = 1.0E-5  ! soit Smin=0.001 %
 ZSMAX = 1.0E-1  ! soit Smax=   10 %
-XHYPINTP1 = FLOAT(NHYP-1)/LOG(ZSMAX/ZSMIN)
-XHYPINTP2 = FLOAT(NHYP)-XHYPINTP1*LOG(ZSMAX)
+XHYPINTP1 = REAL(NHYP-1)/LOG(ZSMAX/ZSMIN)
+XHYPINTP2 = REAL(NHYP)-XHYPINTP1*LOG(ZSMAX)
 IF (HPARAM_CCN == 'CPB') THEN ! CPB98's case 
   TAB_HYP : DO J1 = 1,NHYP    ! tabulation using a logarithmic scale for the
                       ! supersaturations (0.00001<S<0.1 in "no unit")
-              ZSS =ZSMAX*(ZSMIN/ZSMAX)**(FLOAT(NHYP-J1)/FLOAT(NHYP-1))
+              ZSS =ZSMAX*(ZSMIN/ZSMAX)**(REAL(NHYP-J1)/REAL(NHYP-1))
               XHYPF12(J1) = HYPGEO(XMUHEN,XKHEN/2.0,(XKHEN+2.0)/2.0,XBETAHEN, &
                                    100.*ZSS)
               XHYPF32(J1) = HYPGEO(XMUHEN,XKHEN/2.0,(XKHEN+3.0)/2.0,XBETAHEN*100**2, &
@@ -385,7 +386,7 @@ END IF
 !
 NAHEN = 81 ! Tabulation for each Kelvin degree in the range XTT-40 to XTT+40
 XAHENINTP1 = 1.0
-XAHENINTP2 = 0.5*FLOAT(NAHEN-1) - XTT
+XAHENINTP2 = 0.5*REAL(NAHEN-1) - XTT
 IF (HPARAM_CCN == 'TFH') THEN
   ALLOCATE (XAHENY(NAHEN))
   ALLOCATE (XAHENF(NAHEN))
@@ -395,7 +396,7 @@ IF (HPARAM_CCN == 'TFH') THEN
 !
   XCSTHEN = 1.0 / ( XRHOLW*4.0*XPI*XCHEN*(100.0)**XKHEN )
   DO J1 = 1,NAHEN
-    ZTT = XTT + FLOAT(J1-(NAHEN-1)/2)                    ! T
+    ZTT = XTT + REAL(J1-(NAHEN-1)/2)                     ! T
     ZLV = XLVTT+(XCPV-XCL)*(ZTT-XTT)                     ! Lv
     ZPSI1 = (XG/(XRD*ZTT))*(XMV*ZLV/(XMD*XCPD*ZTT)-1.)   ! Psi1
     ZG    = 1.E-4*(6.224E-7 + 0.281E-7 * ZTT + 2.320E-10 * ZTT**2) *  & ! G
@@ -430,7 +431,7 @@ ELSE
   XCSTHEN = 1.0 / ( XRHOLW*2.0*XPI*XKHEN*XCHEN*(100.0)**XKHEN * &
                     GAMMA(XKHEN/2.0)*GAMMA(3.0/2.0)/GAMMA((XKHEN+3.0)/2.0) )
   DO J1 = 1,NAHEN
-    ZTT = XTT + FLOAT(J1-(NAHEN-1)/2)                    ! T
+    ZTT = XTT + REAL(J1-(NAHEN-1)/2)                     ! T
     ZLV = XLVTT+(XCPV-XCL)*(ZTT-XTT)                     ! Lv
     XPSI1(J1) = (XG/(XRD*ZTT))*(XMV*ZLV/(XMD*XCPD*ZTT)-1.)   ! Psi1
     XPSI3(J1) = -1*XMV*ZLV/(XMD*XRD*(ZTT**2))   ! Psi3
diff --git a/src/MNH/ini_rain_ice.f90 b/src/MNH/ini_rain_ice.f90
index 9420cb1e70b58ae82df107fe0ca894915dcb8da9..62cabad5b587f48a6cd6d443c088c8c7cea8c2ca 100644
--- a/src/MNH/ini_rain_ice.f90
+++ b/src/MNH/ini_rain_ice.f90
@@ -101,7 +101,8 @@ END MODULE MODI_INI_RAIN_ICE
 !!      J.-P. Pinty 24/11/01 Update ICE3/ICE4 options
 !!      S. Riette 2016-11: new ICE3/ICE4 options
 !!      P. Wautelet 22/01/2019 bug correction: incorrect write
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -219,7 +220,7 @@ END IF
 KSPLITR = 1
 IF (CSEDIM == 'SPLI' .AND. .NOT. LRED ) THEN
  SPLIT : DO
-  ZT = PTSTEP / FLOAT(KSPLITR)
+  ZT = PTSTEP / REAL(KSPLITR)
   IF ( ZT * ZVTRMAX / PDZMIN .LT. 1.) EXIT SPLIT
   KSPLITR = KSPLITR + 1
  END DO SPLIT
@@ -670,7 +671,7 @@ END IF
 NGAMINC = 80
 XGAMINC_BOUND_MIN = 1.0E-1 ! Minimal value of (Lbda * D_cs^lim)**alpha
 XGAMINC_BOUND_MAX = 1.0E7  ! Maximal value of (Lbda * D_cs^lim)**alpha
-ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/FLOAT(NGAMINC-1))
+ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/REAL(NGAMINC-1))
 !
 IF( .NOT.ALLOCATED(XGAMINC_RIM1) ) ALLOCATE( XGAMINC_RIM1(NGAMINC) )
 IF( .NOT.ALLOCATED(XGAMINC_RIM2) ) ALLOCATE( XGAMINC_RIM2(NGAMINC) )
@@ -708,13 +709,13 @@ XLBSACCR3   =                          MOMG(XALPHAS,XNUS,XBS+2.)
 NACCLBDAS = 40
 XACCLBDAS_MIN = 5.0E1 ! Minimal value of Lbda_s to tabulate XKER_RACCS
 XACCLBDAS_MAX = 5.0E5 ! Maximal value of Lbda_s to tabulate XKER_RACCS
-ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/FLOAT(NACCLBDAS-1)
+ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/REAL(NACCLBDAS-1)
 XACCINTP1S = 1.0 / ZRATE
 XACCINTP2S = 1.0 - LOG( XACCLBDAS_MIN ) / ZRATE
 NACCLBDAR = 40
 XACCLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RACCS
 XACCLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RACCS
-ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/FLOAT(NACCLBDAR-1)
+ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/REAL(NACCLBDAR-1)
 XACCINTP1R = 1.0 / ZRATE
 XACCINTP2R = 1.0 - LOG( XACCLBDAR_MIN ) / ZRATE
 !
@@ -912,19 +913,19 @@ XLBRDRYG3   =                          MOMG(XALPHAR,XNUR,5.)
 NDRYLBDAR = 40
 XDRYLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RDRYG
 XDRYLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RDRYG
-ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/FLOAT(NDRYLBDAR-1)
+ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/REAL(NDRYLBDAR-1)
 XDRYINTP1R = 1.0 / ZRATE
 XDRYINTP2R = 1.0 - LOG( XDRYLBDAR_MIN ) / ZRATE
 NDRYLBDAS = 80
 XDRYLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SDRYG
 XDRYLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SDRYG
-ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/FLOAT(NDRYLBDAS-1)
+ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/REAL(NDRYLBDAS-1)
 XDRYINTP1S = 1.0 / ZRATE
 XDRYINTP2S = 1.0 - LOG( XDRYLBDAS_MIN ) / ZRATE
 NDRYLBDAG = 40
 XDRYLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG
 XDRYLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG
-ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/FLOAT(NDRYLBDAG-1)
+ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/REAL(NDRYLBDAG-1)
 XDRYINTP1G = 1.0 / ZRATE
 XDRYINTP2G = 1.0 - LOG( XDRYLBDAG_MIN ) / ZRATE
 !
@@ -1110,25 +1111,25 @@ XLBRWETH3   =                          MOMG(XALPHAR,XNUR,XBR+2.)
 NWETLBDAS = 80
 XWETLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SWETH
 XWETLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SWETH
-ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN)/FLOAT(NWETLBDAS-1)
+ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN)/REAL(NWETLBDAS-1)
 XWETINTP1S = 1.0 / ZRATE
 XWETINTP2S = 1.0 - LOG( XWETLBDAS_MIN ) / ZRATE
 NWETLBDAG = 40
 XWETLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_GWETH
 XWETLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_GWETH
-ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN)/FLOAT(NWETLBDAG-1)
+ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN)/REAL(NWETLBDAG-1)
 XWETINTP1G = 1.0 / ZRATE
 XWETINTP2G = 1.0 - LOG( XWETLBDAG_MIN ) / ZRATE
 NWETLBDAR = 40
 XWETLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RWETH
 XWETLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RWETH
-ZRATE = LOG(XWETLBDAR_MAX/XWETLBDAR_MIN)/FLOAT(NWETLBDAR-1)
+ZRATE = LOG(XWETLBDAR_MAX/XWETLBDAR_MIN)/REAL(NWETLBDAR-1)
 XWETINTP1R = 1.0 / ZRATE
 XWETINTP2R = 1.0 - LOG( XWETLBDAR_MIN ) / ZRATE
 NWETLBDAH = 40
 XWETLBDAH_MIN = 1.0E3 ! Min value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH,XKER_RWETH
 XWETLBDAH_MAX = 1.0E7 ! Max value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH,XKER_RWETH
-ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN)/FLOAT(NWETLBDAH-1)
+ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN)/REAL(NWETLBDAH-1)
 XWETINTP1H = 1.0 / ZRATE
 XWETINTP2H = 1.0 - LOG( XWETLBDAH_MIN ) / ZRATE
 !
diff --git a/src/MNH/ini_rain_ice_elec.f90 b/src/MNH/ini_rain_ice_elec.f90
index d352581f8345e2060623700af764e3be4a43d20a..940caeaeefc96dcda0800b7678b8be775815c116 100644
--- a/src/MNH/ini_rain_ice_elec.f90
+++ b/src/MNH/ini_rain_ice_elec.f90
@@ -86,7 +86,8 @@ END MODULE MODI_INI_RAIN_ICE_ELEC
 !!    Original: 2002
 !!    Modifications:
 !!      C. Barthe   20/11/09   update to version 4.8.1
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -198,7 +199,7 @@ END IF
 KSPLITR = 1
 IF (CSEDIM == 'SPLI') THEN
   SPLIT : DO
-    ZT = PTSTEP / FLOAT(KSPLITR)
+    ZT = PTSTEP / REAL(KSPLITR)
     IF (ZT * ZVTRMAX / PDZMIN .LT. 1.) EXIT SPLIT
     KSPLITR = KSPLITR + 1
   END DO SPLIT
@@ -620,7 +621,7 @@ END IF
 NGAMINC = 80
 XGAMINC_BOUND_MIN = 1.0E-1 ! Minimal value of (Lbda * D_cs^lim)**alpha
 XGAMINC_BOUND_MAX = 1.0E7  ! Maximal value of (Lbda * D_cs^lim)**alpha
-ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/FLOAT(NGAMINC-1))
+ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/REAL(NGAMINC-1))
 !
 IF( .NOT.ALLOCATED(XGAMINC_RIM1) ) ALLOCATE( XGAMINC_RIM1(NGAMINC) )
 IF( .NOT.ALLOCATED(XGAMINC_RIM2) ) ALLOCATE( XGAMINC_RIM2(NGAMINC) )
@@ -659,14 +660,14 @@ XLBSACCR3   =                              MOMG(XALPHAS,XNUS,XBS+2.)
 NACCLBDAS = 40
 XACCLBDAS_MIN = 5.0E1 ! Minimal value of Lbda_s to tabulate XKER_RACCS
 XACCLBDAS_MAX = 5.0E5 ! Maximal value of Lbda_s to tabulate XKER_RACCS
-ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/FLOAT(NACCLBDAS-1)
+ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/REAL(NACCLBDAS-1)
 XACCINTP1S = 1.0 / ZRATE
 XACCINTP2S = 1.0 - LOG( XACCLBDAS_MIN ) / ZRATE
 !
 NACCLBDAR = 40
 XACCLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RACCS
 XACCLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RACCS
-ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/FLOAT(NACCLBDAR-1)
+ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/REAL(NACCLBDAR-1)
 XACCINTP1R = 1.0 / ZRATE
 XACCINTP2R = 1.0 - LOG( XACCLBDAR_MIN ) / ZRATE
 !
@@ -865,21 +866,21 @@ XLBRDRYG3   =                              MOMG(XALPHAR,XNUR,5.)
 NDRYLBDAR = 40
 XDRYLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RDRYG
 XDRYLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RDRYG
-ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN) / FLOAT(NDRYLBDAR-1)
+ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN) / REAL(NDRYLBDAR-1)
 XDRYINTP1R = 1.0 / ZRATE
 XDRYINTP2R = 1.0 - LOG( XDRYLBDAR_MIN ) / ZRATE
 !
 NDRYLBDAS = 80
 XDRYLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SDRYG
 XDRYLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SDRYG
-ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN) / FLOAT(NDRYLBDAS-1)
+ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN) / REAL(NDRYLBDAS-1)
 XDRYINTP1S = 1.0 / ZRATE
 XDRYINTP2S = 1.0 - LOG( XDRYLBDAS_MIN ) / ZRATE
 !
 NDRYLBDAG = 40
 XDRYLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG
 XDRYLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG
-ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN) / FLOAT(NDRYLBDAG-1)
+ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN) / REAL(NDRYLBDAG-1)
 XDRYINTP1G = 1.0 / ZRATE
 XDRYINTP2G = 1.0 - LOG( XDRYLBDAG_MIN ) / ZRATE
 !
@@ -1051,19 +1052,19 @@ XLBGWETH3   =                              MOMG(XALPHAG,XNUG,XBG+2.)
 NWETLBDAS = 80
 XWETLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SWETH
 XWETLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SWETH
-ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN) / FLOAT(NWETLBDAS-1)
+ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN) / REAL(NWETLBDAS-1)
 XWETINTP1S = 1.0 / ZRATE
 XWETINTP2S = 1.0 - LOG( XWETLBDAS_MIN ) / ZRATE
 NWETLBDAG = 40
 XWETLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_GWETH
 XWETLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_GWETH
-ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN) / FLOAT(NWETLBDAG-1)
+ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN) / REAL(NWETLBDAG-1)
 XWETINTP1G = 1.0 / ZRATE
 XWETINTP2G = 1.0 - LOG( XWETLBDAG_MIN ) / ZRATE
 NWETLBDAH = 40
 XWETLBDAH_MIN = 1.0E3 ! Min value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH
 XWETLBDAH_MAX = 1.0E7 ! Max value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH
-ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN) / FLOAT(NWETLBDAH-1)
+ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN) / REAL(NWETLBDAH-1)
 XWETINTP1H = 1.0 / ZRATE
 XWETINTP2H = 1.0 - LOG( XWETLBDAH_MIN ) / ZRATE
 !
diff --git a/src/MNH/isocom.f b/src/MNH/isocom.f
index b02dbe9f597d2c93ca9f49458d7dfb825558f88c..f2e6503e663a2f39655c053f185dd64501f7421c 100644
--- a/src/MNH/isocom.f
+++ b/src/MNH/isocom.f
@@ -127,6 +127,7 @@ C Modifications:
 C  P. Wautelet 13/02/2018: use ifdef MNH_REAL to prevent problems with intrinsics on Blue Gene/Q
 C  P. Wautelet 22/01/2019: replace obsolete SNGL intrinsics by REAL intrinsics
 C  P. Wautelet 19/04/2019: use kind(0.0d0) instead of kind=8
+C  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 C=======================================================================
 C
       SUBROUTINE ISOROPIA (WI, RHI, TEMPI,  CNTRL, 
@@ -3895,7 +3896,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ***********************
 C
-      DX = (RTHI-RTLW)/FLOAT(NDIV)
+      DX = (RTHI-RTLW)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1+DX
          Y2 = FUNC (X2)
diff --git a/src/MNH/isofwd.f b/src/MNH/isofwd.f
index e068c3ad2f546ff1b0266182666b01971e1ce1e2..7b5fa91c879abcce94904b2af41eb6cef56f487a 100644
--- a/src/MNH/isofwd.f
+++ b/src/MNH/isofwd.f
@@ -1,6 +1,6 @@
-CMNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+CMNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 CMNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-CMNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+CMNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 CMNH_LIC for details. version 1.
 C=======================================================================
 C
@@ -17,6 +17,7 @@ C
 C Modifications:
 C   J.Escobar : 10/2017 , for real*4 replace DOUBLE => REAL
 C  Philippe 13/02/2018: use ifdef MNH_REAL to prevent problems with intrinsics on Blue Gene/Q
+C  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 C
 C=======================================================================
 C
@@ -473,7 +474,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (OMEHI-OMELO)/FLOAT(NDIV)
+      DX = (OMEHI-OMELO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = MAX(X1-DX, OMELO)
          Y2 = FUNCA2 (X2)
@@ -759,7 +760,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ***********************
 C
-      DZ = (ZHI-ZLO)/FLOAT(NDIV)
+      DZ = (ZHI-ZLO)/REAL(NDIV)
       DO 10 I=1,NDIV
          Z2 = Z1+DZ
          Y2 = FUNCB3A (Z2, TLC, TNH42S4)
@@ -1495,7 +1496,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ***********************
 C
-      DX = (KHI-KLO)/FLOAT(NDIV)
+      DX = (KHI-KLO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1+DX
          Y2 = FUNCC1 (X2)
@@ -1671,7 +1672,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI4HI-PSI4LO)/FLOAT(NDIV)
+      DX = (PSI4HI-PSI4LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1+DX
          Y2 = FUNCD3 (X2)
@@ -1889,7 +1890,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX   = (PSI4HI-PSI4LO)/FLOAT(NDIV)
+      DX   = (PSI4HI-PSI4LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1+DX
          Y2 = FUNCD2 (X2)
@@ -2212,7 +2213,7 @@ ccc      IF (WATER .LE. TINY) RETURN                    ! No water
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI6HI-PSI6LO)/FLOAT(NDIV)
+      DX = (PSI6HI-PSI6LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1+DX 
          Y2 = FUNCG5A (X2)
@@ -2419,7 +2420,7 @@ CCC      IF (WATER .LE. TINY) RETURN                    ! No water
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI6HI-PSI6LO)/FLOAT(NDIV)
+      DX = (PSI6HI-PSI6LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2  = X1+DX
          Y2  = FUNCG4A (X2)
@@ -2704,7 +2705,7 @@ CCC      IF (WATER .LE. TINY) RETURN                    ! No water
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI6HI-PSI6LO)/FLOAT(NDIV)
+      DX = (PSI6HI-PSI6LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2  = X1+DX 
          Y2  = FUNCG3A (X2)
@@ -3005,7 +3006,7 @@ CCC      IF (WATER .LE. TINY) GOTO 50               ! No water
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI6HI-PSI6LO)/FLOAT(NDIV)
+      DX = (PSI6HI-PSI6LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1+DX 
          Y2 = FUNCG2A (X2)
@@ -3442,7 +3443,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI6HI-PSI6LO)/FLOAT(NDIV)
+      DX = (PSI6HI-PSI6LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1+DX 
          Y2 = FUNCH6A (X2)
@@ -3659,7 +3660,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI6HI-PSI6LO)/FLOAT(NDIV)
+      DX = (PSI6HI-PSI6LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1+DX 
          Y2 = FUNCH5A (X2)
@@ -3888,7 +3889,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI6HI-PSI6LO)/FLOAT(NDIV)
+      DX = (PSI6HI-PSI6LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1+DX 
          Y2 = FUNCH4A (X2)
@@ -4142,7 +4143,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI6HI-PSI6LO)/FLOAT(NDIV)
+      DX = (PSI6HI-PSI6LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1+DX 
          Y2 = FUNCH3A (X2)
@@ -4451,7 +4452,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI6HI-PSI6LO)/FLOAT(NDIV)
+      DX = (PSI6HI-PSI6LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1+DX 
          Y2 = FUNCH2A (X2)
@@ -4995,7 +4996,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI4HI-PSI4LO)/FLOAT(NDIV)
+      DX = (PSI4HI-PSI4LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1-DX
          Y2 = FUNCI5A (X2)
@@ -5186,7 +5187,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI4HI-PSI4LO)/FLOAT(NDIV)
+      DX = (PSI4HI-PSI4LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1-DX
          Y2 = FUNCI4A (X2)
@@ -5438,7 +5439,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI2HI-PSI2LO)/FLOAT(NDIV)
+      DX = (PSI2HI-PSI2LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = MAX(X1-DX, PSI2LO)
          Y2 = FUNCI3A (X2)
@@ -5532,7 +5533,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI4HI-PSI4LO)/FLOAT(NDIV)
+      DX = (PSI4HI-PSI4LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = MAX(X1-DX, PSI4LO)
          Y2 = FUNCI3B (X2)
@@ -5781,7 +5782,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI2HI-PSI2LO)/FLOAT(NDIV)
+      DX = (PSI2HI-PSI2LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = MAX(X1-DX, PSI2LO)
          Y2 = FUNCI2A (X2)
@@ -6163,7 +6164,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI1HI-PSI1LO)/FLOAT(NDIV)
+      DX = (PSI1HI-PSI1LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1-DX
          Y2 = FUNCJ2 (X2)
@@ -6334,7 +6335,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI1HI-PSI1LO)/FLOAT(NDIV)
+      DX = (PSI1HI-PSI1LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = X1-DX
          Y2 = FUNCJ1 (X2)
diff --git a/src/MNH/isorev.f b/src/MNH/isorev.f
index 75957b2bde25d2c8f8af8d9b7926a385d97331a6..1c1168daa039cd1bcc64cecef500a1e45aaf4095 100644
--- a/src/MNH/isorev.f
+++ b/src/MNH/isorev.f
@@ -1,6 +1,6 @@
-CMNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+CMNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 CMNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-CMNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+CMNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 CMNH_LIC for details. version 1.
 C=======================================================================
 C
@@ -17,6 +17,7 @@ C
 C Modifications:
 C   J.Escobar : 10/2017 , for real*4 replace DOUBLE => REAL
 C  Philippe 13/02/2018: use ifdef MNH_REAL to prevent problems with intrinsics on Blue Gene/Q
+C  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 C
 C=======================================================================
 C
@@ -769,7 +770,7 @@ C
 C
 C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO **********************
 C
-      DX = (PSI1HI-PSI1LO)/FLOAT(NDIV)
+      DX = (PSI1HI-PSI1LO)/REAL(NDIV)
       DO 10 I=1,NDIV
          X2 = MAX(X1-DX, ZERO)
          Y2 = FUNCN2 (X2)
diff --git a/src/MNH/latlon_to_xy.f90 b/src/MNH/latlon_to_xy.f90
index 0b6d8b6584f6b28eae20d160e00abd9ac8de2824..eded99bf5b50b499036ac347716a959a350e790f 100644
--- a/src/MNH/latlon_to_xy.f90
+++ b/src/MNH/latlon_to_xy.f90
@@ -56,6 +56,7 @@
 !!    + changes call to READ_HGRID
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !----------------------------------------------------------------------------
 !
 !*    0.     DECLARATION
@@ -166,8 +167,8 @@ DO
 !
   II=MAX(MIN(COUNT(XPGDXHAT(:)<ZXHAT),NPGDIMAX+2*JPHEXT-1),1)
   IJ=MAX(MIN(COUNT(XPGDYHAT(:)<ZYHAT),NPGDJMAX+2*JPHEXT-1),1)
-  ZI=(ZXHAT-XPGDXHAT(II))/(XPGDXHAT(II+1)-XPGDXHAT(II))+FLOAT(II)
-  ZJ=(ZYHAT-XPGDYHAT(IJ))/(XPGDYHAT(IJ+1)-XPGDYHAT(IJ))+FLOAT(IJ)
+  ZI=(ZXHAT-XPGDXHAT(II))/(XPGDXHAT(II+1)-XPGDXHAT(II))+REAL(II)
+  ZJ=(ZYHAT-XPGDYHAT(IJ))/(XPGDYHAT(IJ+1)-XPGDYHAT(IJ))+REAL(IJ)
 !
   IF (      (ZI>=1.) .AND. (ZI<=NPGDIMAX+2*JPHEXT+1) &
       .AND. (ZJ>=1.) .AND. (ZJ<=NPGDJMAX+2*JPHEXT+1) ) THEN
diff --git a/src/MNH/lima_ccn_activation.f90 b/src/MNH/lima_ccn_activation.f90
index 8ddde4450d5882b37d7a0b328e087f00de386202..97b12f95ce27a8e739e7acaf0f03cbe099fbd8cf 100644
--- a/src/MNH/lima_ccn_activation.f90
+++ b/src/MNH/lima_ccn_activation.f90
@@ -88,7 +88,8 @@ END MODULE MODI_LIMA_CCN_ACTIVATION
 !!    -------------
 !!      Original             ??/??/13 
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -277,9 +278,9 @@ IF( INUCT >= 1 ) THEN
 !  Remark : in LIMA's nucleation parameterization, Smax=0.01 for a supersaturation of 1% !
 !
 !
-   ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NAHEN)-0.0001, XAHENINTP1 * ZZT(:) + XAHENINTP2 ) )
+   ZVEC1(:) = MAX( 1.0001, MIN( REAL(NAHEN)-0.0001, XAHENINTP1 * ZZT(:) + XAHENINTP2 ) )
    IVEC1(:) = INT( ZVEC1(:) )
-   ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) )
+   ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) )
    ALLOCATE(ZSMAX(INUCT))
 !
 !
@@ -363,9 +364,9 @@ IF( INUCT >= 1 ) THEN
 ! Modified values for Beta and C (see in init_aerosol_properties) account for that
 !
    WHERE (ZZW5(:) > 0. .AND. ZSMAX(:) > 0.)
-      ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NHYP)-0.0001, XHYPINTP1*LOG(ZSMAX(:))+XHYPINTP2 ) )
+      ZVEC1(:) = MAX( 1.0001, MIN( REAL(NHYP)-0.0001, XHYPINTP1*LOG(ZSMAX(:))+XHYPINTP2 ) )
       IVEC1(:) = INT( ZVEC1(:) )
-      ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) )
+      ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) )
    END WHERE
    ZZW6(:)  = 0. ! initialize the change of cloud droplet concentration
 !
@@ -722,10 +723,10 @@ INTEGER                        :: PIVEC1
 ALLOCATE(PFUNCSMAX(NPTS))
 !
 PFUNCSMAX(:) = 0.
-PZVEC1 = MAX( 1.0001,MIN( FLOAT(NHYP)-0.0001,               &
+PZVEC1 = MAX( 1.0001,MIN( REAL(NHYP)-0.0001,               &
                            XHYPINTP1*LOG(PPZSMAX)+XHYPINTP2 ) )
 PIVEC1 = INT( PZVEC1 )
-PZVEC1 = PZVEC1 - FLOAT( PIVEC1 )
+PZVEC1 = PZVEC1 - REAL( PIVEC1 )
 DO JMOD = 1, NMOD_CCN
    ZHYPF        = 0.          ! XHYPF32 is tabulated with ZSMAX in [NO UNITS]
    ZHYPF        =   XHYPF32( PIVEC1+1,JMOD ) * PZVEC1              &
@@ -778,10 +779,10 @@ REAL                           :: PZVEC1
 INTEGER                        :: PIVEC1
 !
 PSINGL_FUNCSMAX = 0.
-PZVEC1    = MAX( 1.0001,MIN( FLOAT(NHYP)-0.0001,               &
+PZVEC1    = MAX( 1.0001,MIN( REAL(NHYP)-0.0001,               &
                               XHYPINTP1*LOG(PPZSMAX)+XHYPINTP2 ) )
 PIVEC1 = INT( PZVEC1 )
-PZVEC1 = PZVEC1 - FLOAT( PIVEC1 )
+PZVEC1 = PZVEC1 - REAL( PIVEC1 )
 DO JMOD = 1, NMOD_CCN
    ZHYPF        = 0.          ! XHYPF32 is tabulated with ZSMAX in [NO UNITS]
    ZHYPF        =   XHYPF32( PIVEC1+1,JMOD ) * PZVEC1              &
diff --git a/src/MNH/lima_cold_sedimentation.f90 b/src/MNH/lima_cold_sedimentation.f90
index c81d3924ffa5069574a428ad741c75911540f03a..d4e99f68c4b862e4044fba57f5ce79bccb84a98e 100644
--- a/src/MNH/lima_cold_sedimentation.f90
+++ b/src/MNH/lima_cold_sedimentation.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !      ###################################
@@ -75,7 +75,8 @@ END MODULE MODI_LIMA_COLD_SEDIMENTATION
 !!      Original             ??/??/13 
 !!      C. Barthe  * LACy *  jan. 2014   add budgets
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -170,7 +171,7 @@ IKE=SIZE(PZZ,3) - JPVEXT
 ALLOCATE(ZRTMIN(SIZE(XRTMIN)))
 ZRTMIN(:) = XRTMIN(:) / PTSTEP
 !
-ZTSPLITG= PTSTEP / FLOAT(KSPLITG)
+ZTSPLITG= PTSTEP / REAL(KSPLITG)
 !
 PINPRS(:,:) = 0.
 PINPRG(:,:) = 0.
diff --git a/src/MNH/lima_droplets_riming_snow.f90 b/src/MNH/lima_droplets_riming_snow.f90
index 197458b65d2216093c3c0a1b2e38a86486066892..b255295a432345a39639e258f5436bb2ffbe7a9e 100644
--- a/src/MNH/lima_droplets_riming_snow.f90
+++ b/src/MNH/lima_droplets_riming_snow.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2018-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !      #################################
        MODULE MODI_LIMA_DROPLETS_RIMING_SNOW
@@ -74,7 +74,8 @@ END MODULE MODI_LIMA_DROPLETS_RIMING_SNOW
 !!    MODIFICATIONS
 !!    -------------
 !!      Original             15/03/2018 
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -165,10 +166,10 @@ WHERE( GRIM )
 !               set of Lbda_s used to tabulate some moments of the incomplete 
 !               gamma function
 !
-   ZVEC2(:) = MAX( 1.0001, MIN( FLOAT(NGAMINC)-0.0001,           &
+   ZVEC2(:) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001,           &
                        XRIMINTP1 * LOG( ZVEC1(:) ) + XRIMINTP2 ) )
    IVEC2(:) = INT( ZVEC2(:) )
-   ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) )
+   ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) )
 !
 !        2.     perform the linear interpolation of the normalized
 !               "2+XDS"-moment of the incomplete gamma function
@@ -217,10 +218,10 @@ GRIM(:) = (PT(:)<XHMTMAX)     .AND. (PT(:)>XHMTMIN)     .AND. &
 WHERE ( GRIM )
 !
    ZVEC1(:) = PLBDC(:)
-   ZVEC2(:) = MAX( 1.0001, MIN( FLOAT(NGAMINC)-0.0001,           &
+   ZVEC2(:) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001,           &
                          XHMLINTP1 * LOG( ZVEC1(:) ) + XHMLINTP2 ) )
    IVEC2(:) = INT( ZVEC2(:) )
-   ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) )
+   ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) )
    ZVEC1(:) =   XGAMINC_HMC( IVEC2(:)+1 )* ZVEC2(:)      &
                     - XGAMINC_HMC( IVEC2(:)   )*(ZVEC2(:) - 1.0)
    ZZW4(:) = ZVEC1(:) ! Large droplets
diff --git a/src/MNH/lima_functions.f90 b/src/MNH/lima_functions.f90
index f253b700aa334c5879f149748cf21cfa4e489c00..a40d500c0ba5a7b56ee6faa8f50d9340993c8396 100644
--- a/src/MNH/lima_functions.f90
+++ b/src/MNH/lima_functions.f90
@@ -6,6 +6,7 @@
 ! Modifications:
 !  P. Wautelet 22/01/2019: replace double precision declarations by real(kind(0.0d0)) (to allow compilation by NAG compiler)
 !  P. Wautelet 19/04/2019: use modd_precision kinds
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-----------------------------------------------------------------
 !#################################
         MODULE MODI_LIMA_FUNCTIONS
@@ -258,7 +259,7 @@ SUBROUTINE gaulag(x,w,n,alf)
         if(abs(z-z1).le.EPS)goto 1
 12   continue
 1    x(i)=z
-     w(i)=-exp(gammln(alf+n)-gammln(float(n)))/(pp*n*p2)
+     w(i)=-exp(gammln(alf+n)-gammln(real(n)))/(pp*n*p2)
 13 continue
 !
 ! NORMALISATION
@@ -293,7 +294,7 @@ SUBROUTINE gauher(x,w,n)
   m=(n+1)/2
   do 13 i=1,m
      if(i.eq.1)then
-        z=sqrt(float(2*n+1))-1.85575*(2*n+1)**(-.16667)
+        z=sqrt(real(2*n+1))-1.85575*(2*n+1)**(-.16667)
      else if(i.eq.2)then
         z=z-1.14*n**.426/z
      else if (i.eq.3)then
diff --git a/src/MNH/lima_graupel.f90 b/src/MNH/lima_graupel.f90
index c1d740a479a8580109eb100e5573d70171eef777..ad114da363f6c1616ce45ee6534f929d64845e2f 100644
--- a/src/MNH/lima_graupel.f90
+++ b/src/MNH/lima_graupel.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2018-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !      #################################
        MODULE MODI_LIMA_GRAUPEL
 !      #################################
@@ -127,7 +128,8 @@ END MODULE MODI_LIMA_GRAUPEL
 !!    MODIFICATIONS
 !!    -------------
 !!      Original             15/03/2018
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -303,15 +305,15 @@ WHERE( GDRY )
 !        in the geometrical set of (Lbda_g,Lbda_s) couplet use to
 !        tabulate the SDRYG-kernel
 !
-   ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAG)-0.0001,           &
+   ZVEC1(:) = MAX( 1.0001, MIN( REAL(NDRYLBDAG)-0.0001,           &
                          XDRYINTP1G * LOG( ZVEC1(:) ) + XDRYINTP2G ) )
    IVEC1(:) = INT( ZVEC1(:) )
-   ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) )
+   ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) )
 !
-   ZVEC2(:) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAS)-0.0001,           &
+   ZVEC2(:) = MAX( 1.0001, MIN( REAL(NDRYLBDAS)-0.0001,           &
                          XDRYINTP1S * LOG( ZVEC2(:) ) + XDRYINTP2S ) )
    IVEC2(:) = INT( ZVEC2(:) )
-   ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) )
+   ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) )
 !
 !*       perform the bilinear interpolation of the normalized
 !        SDRYG-kernel
@@ -352,15 +354,15 @@ WHERE( GDRY )
 !        in the geometrical set of (Lbda_g,Lbda_r) couplet use to
 !        tabulate the RDRYG-kernel
 !
-   ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAG)-0.0001,           &
+   ZVEC1(:) = MAX( 1.0001, MIN( REAL(NDRYLBDAG)-0.0001,           &
                          XDRYINTP1G * LOG( ZVEC1(:) ) + XDRYINTP2G ) )
    IVEC1(:) = INT( ZVEC1(:) )
-   ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) )
+   ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) )
 !
-   ZVEC2(:) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAR)-0.0001,           &
+   ZVEC2(:) = MAX( 1.0001, MIN( REAL(NDRYLBDAR)-0.0001,           &
                          XDRYINTP1R * LOG( ZVEC2(:) ) + XDRYINTP2R ) )
    IVEC2(:) = INT( ZVEC2(:) )
-   ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) )
+   ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) )
 !
 !*       Perform the bilinear interpolation of the normalized
 !        RDRYG-kernel
@@ -478,10 +480,10 @@ IVEC2(:)=0
 WHERE( GDRY(:) )
 !
    ZVEC1(:) = PLBDC(:)
-   ZVEC2(:) = MAX( 1.0001, MIN( FLOAT(NGAMINC)-0.0001,           &
+   ZVEC2(:) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001,           &
                          XHMLINTP1 * LOG( ZVEC1(:) ) + XHMLINTP2 ) )
    IVEC2(:) = INT( ZVEC2(:) )
-   ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) )
+   ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) )
    ZVEC1(:) =   XGAMINC_HMC( IVEC2(:)+1 )* ZVEC2(:)      &
                     - XGAMINC_HMC( IVEC2(:)   )*(ZVEC2(:) - 1.0)
    ZZX(:) = ZVEC1(:) ! Large droplets
diff --git a/src/MNH/lima_mixed_fast_processes.f90 b/src/MNH/lima_mixed_fast_processes.f90
index 653c46b9ada79b21f834fe07d0cf051c992c004e..fdb9724bcc844fa74054e06b81c066867c806c04 100644
--- a/src/MNH/lima_mixed_fast_processes.f90
+++ b/src/MNH/lima_mixed_fast_processes.f90
@@ -1,3 +1,8 @@
+!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!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 MODI_LIMA_MIXED_FAST_PROCESSES
 !      #####################################
@@ -135,7 +140,8 @@ END MODULE MODI_LIMA_MIXED_FAST_PROCESSES
 !!    -------------
 !!      Original             ??/??/13 
 !!      C. Barthe  * LACy *  jan. 2014    add budgets
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -261,10 +267,10 @@ IF( IGRIM>0 ) THEN
 !               set of Lbda_s used to tabulate some moments of the incomplete 
 !               gamma function
 !
-   ZVEC2(1:IGRIM) = MAX( 1.0001, MIN( FLOAT(NGAMINC)-0.0001,           &
+   ZVEC2(1:IGRIM) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001,           &
                          XRIMINTP1 * LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) )
    IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) )
-   ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) )
+   ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) )
 !
 !        1.1.3  perform the linear interpolation of the normalized
 !               "2+XDS"-moment of the incomplete gamma function
@@ -353,10 +359,10 @@ IF( IGRIM>0 ) THEN
    ALLOCATE(IVEC2(IGRIM))
 !
    ZVEC1(:) = PACK( ZLBDAC(:),MASK=GRIM(:) )
-   ZVEC2(1:IGRIM) = MAX( 1.0001, MIN( FLOAT(NGAMINC)-0.0001,           &
+   ZVEC2(1:IGRIM) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001,           &
                          XHMLINTP1 * LOG( ZVEC1(1:IGRIM) ) + XHMLINTP2 ) )
    IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) )
-   ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) )
+   ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) )
    ZVEC1(1:IGRIM) =   XGAMINC_HMC( IVEC2(1:IGRIM)+1 )* ZVEC2(1:IGRIM)      &
                     - XGAMINC_HMC( IVEC2(1:IGRIM)   )*(ZVEC2(1:IGRIM) - 1.0)
    ZZX(:) = UNPACK( VECTOR=ZVEC1(:),MASK=GRIM,FIELD=0.0 ) ! Large droplets
@@ -417,15 +423,15 @@ IF( IGACC>0 .AND. LRAIN) THEN
 !               in the geometrical set of (Lbda_s,Lbda_r) couplet use to
 !               tabulate the RACCSS-kernel
 !
-   ZVEC1(1:IGACC) = MAX( 1.0001, MIN( FLOAT(NACCLBDAS)-0.0001,           &
+   ZVEC1(1:IGACC) = MAX( 1.0001, MIN( REAL(NACCLBDAS)-0.0001,           &
                          XACCINTP1S * LOG( ZVEC1(1:IGACC) ) + XACCINTP2S ) )
    IVEC1(1:IGACC) = INT( ZVEC1(1:IGACC) )
-   ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - FLOAT( IVEC1(1:IGACC) )
+   ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - REAL( IVEC1(1:IGACC) )
 !
-   ZVEC2(1:IGACC) = MAX( 1.0001, MIN( FLOAT(NACCLBDAR)-0.0001,           &
+   ZVEC2(1:IGACC) = MAX( 1.0001, MIN( REAL(NACCLBDAR)-0.0001,           &
                          XACCINTP1R * LOG( ZVEC2(1:IGACC) ) + XACCINTP2R ) )
    IVEC2(1:IGACC) = INT( ZVEC2(1:IGACC) )
-   ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - FLOAT( IVEC2(1:IGACC) )
+   ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - REAL( IVEC2(1:IGACC) )
 !
 !        1.3.3  perform the bilinear interpolation of the normalized
 !               RACCSS-kernel
@@ -654,15 +660,15 @@ IF( IGDRY>0 ) THEN
 !               in the geometrical set of (Lbda_g,Lbda_s) couplet use to
 !               tabulate the SDRYG-kernel
 !
-   ZVEC1(1:IGDRY) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAG)-0.0001,           &
+   ZVEC1(1:IGDRY) = MAX( 1.0001, MIN( REAL(NDRYLBDAG)-0.0001,           &
                          XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) )
    IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) )
-   ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) )
+   ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) )
 !
-   ZVEC2(1:IGDRY) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAS)-0.0001,           &
+   ZVEC2(1:IGDRY) = MAX( 1.0001, MIN( REAL(NDRYLBDAS)-0.0001,           &
                          XDRYINTP1S * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2S ) )
    IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) )
-   ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) )
+   ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) )
 !
 !*       2.2.5  perform the bilinear interpolation of the normalized
 !               SDRYG-kernel
@@ -718,15 +724,15 @@ IF( IGDRY>0 ) THEN
 !               in the geometrical set of (Lbda_g,Lbda_r) couplet use to
 !               tabulate the RDRYG-kernel
 !
-   ZVEC1(1:IGDRY) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAG)-0.0001,           &
+   ZVEC1(1:IGDRY) = MAX( 1.0001, MIN( REAL(NDRYLBDAG)-0.0001,           &
                          XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) )
    IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) )
-   ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) )
+   ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) )
 !
-   ZVEC2(1:IGDRY) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAR)-0.0001,           &
+   ZVEC2(1:IGDRY) = MAX( 1.0001, MIN( REAL(NDRYLBDAR)-0.0001,           &
                          XDRYINTP1R * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2R ) )
    IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) )
-   ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) )
+   ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) )
 !
 !*       2.2.10 perform the bilinear interpolation of the normalized
 !               RDRYG-kernel
@@ -924,10 +930,10 @@ IF( IGDRY>0 ) THEN
    ALLOCATE(IVEC2(IGDRY))
 !
    ZVEC1(:) = PACK( ZLBDAC(:),MASK=GDRY(:) )
-   ZVEC2(1:IGDRY) = MAX( 1.0001, MIN( FLOAT(NGAMINC)-0.0001,           &
+   ZVEC2(1:IGDRY) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001,           &
                          XHMLINTP1 * LOG( ZVEC1(1:IGDRY) ) + XHMLINTP2 ) )
    IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) )
-   ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) )
+   ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) )
    ZVEC1(1:IGDRY) =   XGAMINC_HMC( IVEC2(1:IGDRY)+1 )* ZVEC2(1:IGDRY)      &
                     - XGAMINC_HMC( IVEC2(1:IGDRY)   )*(ZVEC2(1:IGDRY) - 1.0)
    ZZX(:) = UNPACK( VECTOR=ZVEC1(:),MASK=GDRY,FIELD=0.0 ) ! Large droplets
@@ -1055,15 +1061,15 @@ IF( IHAIL>0 ) THEN
 !               in the geometrical set of (Lbda_h,Lbda_s) couplet use to
 !               tabulate the SWETH-kernel
 !
-      ZVEC1(1:IGWET) = MAX( 1.0001, MIN( FLOAT(NWETLBDAH)-0.0001,           &
+      ZVEC1(1:IGWET) = MAX( 1.0001, MIN( REAL(NWETLBDAH)-0.0001,           &
                             XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) )
       IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) )
-      ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) )
+      ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) )
 !
-      ZVEC2(1:IGWET) = MAX( 1.0001, MIN( FLOAT(NWETLBDAS)-0.0001,           &
+      ZVEC2(1:IGWET) = MAX( 1.0001, MIN( REAL(NWETLBDAS)-0.0001,           &
                             XWETINTP1S * LOG( ZVEC2(1:IGWET) ) + XWETINTP2S ) )
       IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) )
-      ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) )
+      ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) )
 !
 !*       3.1.5  perform the bilinear interpolation of the normalized
 !               SWETH-kernel
@@ -1118,15 +1124,15 @@ IF( IHAIL>0 ) THEN
 !               in the geometrical set of (Lbda_h,Lbda_g) couplet use to
 !               tabulate the GWETH-kernel
 !
-      ZVEC1(1:IGWET) = MAX( 1.0001, MIN( FLOAT(NWETLBDAG)-0.0001,           &
+      ZVEC1(1:IGWET) = MAX( 1.0001, MIN( REAL(NWETLBDAG)-0.0001,           &
                             XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) )
       IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) )
-      ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) )
+      ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) )
 !
-      ZVEC2(1:IGWET) = MAX( 1.0001, MIN( FLOAT(NWETLBDAG)-0.0001,           &
+      ZVEC2(1:IGWET) = MAX( 1.0001, MIN( REAL(NWETLBDAG)-0.0001,           &
                             XWETINTP1G * LOG( ZVEC2(1:IGWET) ) + XWETINTP2G ) )
       IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) )
-      ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) )
+      ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) )
 !
 !*       3.1.10 perform the bilinear interpolation of the normalized
 !               GWETH-kernel
diff --git a/src/MNH/lima_precip_scavenging.f90 b/src/MNH/lima_precip_scavenging.f90
index ec318f4c81c8257bed19f4c0ac0e0cb8a428573e..cbbf3f3ddaad69dfc3dd83d7196befe77eb6b6a6 100644
--- a/src/MNH/lima_precip_scavenging.f90
+++ b/src/MNH/lima_precip_scavenging.f90
@@ -1,3 +1,8 @@
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!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 MODI_LIMA_PRECIP_SCAVENGING
 !      ##################################
@@ -91,6 +96,7 @@ END MODULE MODI_LIMA_PRECIP_SCAVENGING
 !!      Original             ??/??/13 
 !!
 !!  Philippe Wautelet 28/05/2018: corrected truncated integer division (3/2 -> 1.5)
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*                  0.DECLARATIONS          
@@ -700,7 +706,7 @@ firstcall : IF (GSFIRSTCALL) THEN
    ZDZMIN = MINVAL(PZZ(IIB:IIE,IJB:IJE,IKB+1:IKE+1)-PZZ(IIB:IIE,IJB:IJE,IKB:IKE))
    ISPLITR = 1
    SPLIT : DO
-      ZT = 2.* PTSTEP / FLOAT(ISPLITR)
+      ZT = 2.* PTSTEP / REAL(ISPLITR)
       IF ( ZT * ZVTRMAX / ZDZMIN .LT. 1.) EXIT SPLIT
       ISPLITR = ISPLITR + 1
    END DO SPLIT
@@ -712,10 +718,10 @@ END IF firstcall
 !*       2.2    time splitting loop initialization        
 !
 IF( (KTCOUNT==1) .AND. (CCONF=='START') ) THEN
-  ZTSPLITR = PTSTEP / FLOAT(ISPLITR)       ! Small time step
+  ZTSPLITR = PTSTEP / REAL(ISPLITR)       ! Small time step
   ZTSTEP   = PTSTEP                        ! Large time step
   ELSE
-  ZTSPLITR= 2. * PTSTEP / FLOAT(ISPLITR)
+  ZTSPLITR= 2. * PTSTEP / REAL(ISPLITR)
   ZTSTEP  = 2. * PTSTEP
 END IF
 !
diff --git a/src/MNH/lima_rain_accr_snow.f90 b/src/MNH/lima_rain_accr_snow.f90
index 18a62a528f026cff2fb57a908ca4eaced767b442..60817d81741a913204da6857f538a1bfd4c13c22 100644
--- a/src/MNH/lima_rain_accr_snow.f90
+++ b/src/MNH/lima_rain_accr_snow.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2018-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !      #################################
        MODULE MODI_LIMA_RAIN_ACCR_SNOW
 !      #################################
@@ -66,7 +67,8 @@ END MODULE MODI_LIMA_RAIN_ACCR_SNOW
 !!    MODIFICATIONS
 !!    -------------
 !!      Original             15/03/2018
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -160,15 +162,15 @@ WHERE( GACC )
 !               in the geometrical set of (Lbda_s,Lbda_r) couplet use to
 !               tabulate the RACCSS-kernel
 !
-   ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NACCLBDAS)-0.0001,           &
+   ZVEC1(:) = MAX( 1.0001, MIN( REAL(NACCLBDAS)-0.0001,           &
                          XACCINTP1S * LOG( ZVEC1(:) ) + XACCINTP2S ) )
    IVEC1(:) = INT( ZVEC1(:) )
-   ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) )
+   ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) )
 !
-   ZVEC2(:) = MAX( 1.0001, MIN( FLOAT(NACCLBDAR)-0.0001,           &
+   ZVEC2(:) = MAX( 1.0001, MIN( REAL(NACCLBDAR)-0.0001,           &
                          XACCINTP1R * LOG( ZVEC2(:) ) + XACCINTP2R ) )
    IVEC2(:) = INT( ZVEC2(:) )
-   ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) )
+   ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) )
 !
 !        1.3.3  perform the bilinear interpolation of the normalized
 !               RACCSS-kernel : for small rain drops transformed into snow
diff --git a/src/MNH/lima_sedimentation.f90 b/src/MNH/lima_sedimentation.f90
index b64244b29ae182f4d547ac1c934697da9653f3c5..a4e82471390a836e5b0d8cf0084fd16e68582c36 100644
--- a/src/MNH/lima_sedimentation.f90
+++ b/src/MNH/lima_sedimentation.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2018-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !      ###################################
        MODULE MODI_LIMA_SEDIMENTATION
 !      ###################################
@@ -62,6 +63,7 @@ END MODULE MODI_LIMA_SEDIMENTATION
 !!      Original             15/03/2018
 !!
 !!      B.Vie  02/2019  Desactivate (comment) the heat transport by droplets
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -131,7 +133,7 @@ REAL    :: ZC                             ! Cpl or Cpi
 !
 ! Time splitting
 !
-ZTSPLITG= PTSTEP / FLOAT(NSPLITSED(KID))
+ZTSPLITG= PTSTEP / REAL(NSPLITSED(KID))
 !
 ZWDT=0.
 PINPR(:,:) = 0.
diff --git a/src/MNH/lima_warm_nucl.f90 b/src/MNH/lima_warm_nucl.f90
index abe784f5633f24ef36507bee97f0fd8a80bae368..6887edea9ec7505f0dc072ebbaef71b4225c2763 100644
--- a/src/MNH/lima_warm_nucl.f90
+++ b/src/MNH/lima_warm_nucl.f90
@@ -103,7 +103,8 @@ END MODULE MODI_LIMA_WARM_NUCL
 !!      J. Escobar : 10/2017 , for real*4 use XMNH_EPSILON
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -332,10 +333,10 @@ IF( INUCT >= 1 ) THEN
 !  Remark : in LIMA's nucleation parameterization, Smax=0.01 for a supersaturation of 1% !
 !
 !
-   ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NAHEN)-0.0001, &
+   ZVEC1(:) = MAX( 1.0001, MIN( REAL(NAHEN)-0.0001, &
                                  XAHENINTP1 * ZZT(:) + XAHENINTP2 )  )
    IVEC1(:) = INT( ZVEC1(:) )
-   ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) )
+   ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) )
    ALLOCATE(ZSMAX(INUCT))
 !
 !
@@ -419,10 +420,10 @@ IF( INUCT >= 1 ) THEN
 ! Modified values for Beta and C (see in init_aerosol_properties) account for that
 !
    WHERE (ZZW5(:) > 0. .AND. ZSMAX(:) > 0.)
-      ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NHYP)-0.0001,  &
+      ZVEC1(:) = MAX( 1.0001, MIN( REAL(NHYP)-0.0001,  &
                                     XHYPINTP1*LOG(ZSMAX(:))+XHYPINTP2 ) )
       IVEC1(:) = INT( ZVEC1(:) )
-      ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) )
+      ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) )
    END WHERE
    ZZW6(:)  = 0. ! initialize the change of cloud droplet concentration
 !
@@ -789,10 +790,10 @@ INTEGER                        :: PIVEC1
 ALLOCATE(PFUNCSMAX(NPTS))
 !
 PFUNCSMAX(:) = 0.
-PZVEC1 = MAX( ( 1.0 + 10.0 * XMNH_EPSILON ) ,MIN( FLOAT(NHYP)*( 1.0 - 10.0 * XMNH_EPSILON ) ,               &
+PZVEC1 = MAX( ( 1.0 + 10.0 * XMNH_EPSILON ) ,MIN( REAL(NHYP)*( 1.0 - 10.0 * XMNH_EPSILON ) ,               &
                            XHYPINTP1*LOG(PPZSMAX)+XHYPINTP2 ) )
 PIVEC1 = INT( PZVEC1 )
-PZVEC1 = PZVEC1 - FLOAT( PIVEC1 )
+PZVEC1 = PZVEC1 - REAL( PIVEC1 )
 DO JMOD = 1, NMOD_CCN
    ZHYPF        = 0.          ! XHYPF32 is tabulated with ZSMAX in [NO UNITS]
    ZHYPF        =   XHYPF32( PIVEC1+1,JMOD ) * PZVEC1              &
@@ -845,10 +846,10 @@ REAL                           :: PZVEC1
 INTEGER                        :: PIVEC1
 !
 PSINGL_FUNCSMAX = 0.
-PZVEC1    = MAX( 1.0001,MIN( FLOAT(NHYP)-0.0001,               &
+PZVEC1    = MAX( 1.0001,MIN( REAL(NHYP)-0.0001,               &
                               XHYPINTP1*LOG(PPZSMAX)+XHYPINTP2 ) )
 PIVEC1 = INT( PZVEC1 )
-PZVEC1 = PZVEC1 - FLOAT( PIVEC1 )
+PZVEC1 = PZVEC1 - REAL( PIVEC1 )
 DO JMOD = 1, NMOD_CCN
    ZHYPF        = 0.          ! XHYPF32 is tabulated with ZSMAX in [NO UNITS]
    ZHYPF        =   XHYPF32( PIVEC1+1,JMOD ) * PZVEC1              &
diff --git a/src/MNH/lima_warm_sedimentation.f90 b/src/MNH/lima_warm_sedimentation.f90
index f52838161410316a2fcc3a3a500f40a63c3ff07c..4aa56b4b440a605a24bed1b58c1bfe1bceea2d54 100644
--- a/src/MNH/lima_warm_sedimentation.f90
+++ b/src/MNH/lima_warm_sedimentation.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !      ###################################
        MODULE MODI_LIMA_WARM_SEDIMENTATION
 !      ###################################
@@ -89,7 +90,8 @@ END MODULE MODI_LIMA_WARM_SEDIMENTATION
 !!    MODIFICATIONS
 !!    -------------
 !!      Original             ??/??/13 
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -198,7 +200,7 @@ IJE=SIZE(PZZ,2) - JPHEXT
 IKB=1+JPVEXT
 IKE=SIZE(PZZ,3) - JPVEXT
 !
-ZTSPLITR= PTSTEP / FLOAT(KSPLITR)
+ZTSPLITR= PTSTEP / REAL(KSPLITR)
 !
 PINPRC(:,:) = 0.
 PINPRR(:,:) = 0.
diff --git a/src/MNH/mnh2lpdm_ech.f90 b/src/MNH/mnh2lpdm_ech.f90
index 462bd2ae40152741e1e3a3278a32995461bbef7b..7602cbaedeb897c40394f7621d8ef34b8278d706 100644
--- a/src/MNH/mnh2lpdm_ech.f90
+++ b/src/MNH/mnh2lpdm_ech.f90
@@ -14,6 +14,7 @@
 ! Modifications:
 !  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  Philippe Wautelet 28/05/2018: corrected truncated integer division (1/3 -> 1./3.)
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-----------------------------------------------------------------------
 !
 !*	0.  DECLARATIONS.
@@ -87,7 +88,7 @@ ICURMM=TZDTCUR%TDATE%MONTH
 ICURJJ=TZDTCUR%TDATE%DAY
 ICURSS=NINT(TZDTCUR%TIME)
 !
-ICURMN = NINT( (FLOAT(ICURSS)/60.0)/5.0 )*5   ! Heure arrondie a 5 minutes pres.
+ICURMN = NINT( (REAL(ICURSS)/60.0)/5.0 )*5   ! Heure arrondie a 5 minutes pres.
 ICURSS = 0
 ICURHH =ICURMN/60
 ICURMN =ICURMN-ICURHH*60
diff --git a/src/MNH/mnh2lpdm_ini.f90 b/src/MNH/mnh2lpdm_ini.f90
index 7c185cfde09ae595c16b0e79bf8b048c1a379b90..0d317661df0526b0141eab771a1efda2892fba32 100644
--- a/src/MNH/mnh2lpdm_ini.f90
+++ b/src/MNH/mnh2lpdm_ini.f90
@@ -2,6 +2,7 @@
 !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.
+!--------------------------------------------------------------------------
 !     ######spl
         SUBROUTINE MNH2LPDM_INI(TPFILE1,TPFILE2,TPLOGFILE,TPGRIDFILE,TPDATEFILE)
 !--------------------------------------------------------------------------
@@ -20,6 +21,7 @@
 !
 ! Modifications:
 !  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !--------------------------------------------------------------------------
 !
 !
@@ -136,7 +138,7 @@ NMDLSS=NINT(TZDTEXP1%TIME)
 !
 !*	Heure du modele arrondie a 5 minutes pres.
 !
-NMDLMN = NINT( (FLOAT(NMDLSS)/60.0)/5.0 )*5
+NMDLMN = NINT( (REAL(NMDLSS)/60.0)/5.0 )*5
 NMDLSS = 0
 NMDLHH =NMDLMN/60
 NMDLMN =NMDLMN-NMDLHH*60
diff --git a/src/MNH/modd_precision.f90 b/src/MNH/modd_precision.f90
index e302e46b96e79d9a950ebb5a1cf3f9f39db68547..b7cec6c0ef345fa9f69cb7fbbd7528234dc99e3b 100644
--- a/src/MNH/modd_precision.f90
+++ b/src/MNH/modd_precision.f90
@@ -8,6 +8,7 @@
 ! Modifications:
 !  P. Wautelet 22/03/2019: add MNHINT/REAL32/64_MPI, MNH2REAL32/64_MPI + more public parameters
 !  P. Wautelet 27/03/2019: add MNHTIME and MNHTIME_MPI
+!  P. Wautelet 26/04/2019: add MNHLOG and MNHLOG_MPI/MNHLOG32_MPI/MNHLOG64_MPI
 !-----------------------------------------------------------------
 module modd_precision
 
@@ -24,11 +25,12 @@ private
 public :: MNHINT32, MNHINT64, MNHREAL32, MNHREAL64, MNHREAL128
 
 public :: MNHINT32_MPI,   MNHINT64_MPI
+public :: MNHLOG32_MPI,   MNHLOG64_MPI
 public :: MNHREAL32_MPI,  MNHREAL64_MPI
 public :: MNH2REAL32_MPI, MNH2REAL64_MPI
 
-public :: MNHINT, MNHREAL
-public :: MNHINT_MPI, MNHREAL_MPI, MNH2REAL_MPI
+public :: MNHINT, MNHLOG, MNHREAL
+public :: MNHINT_MPI, MNHLOG_MPI, MNHREAL_MPI, MNH2REAL_MPI
 public :: MNHTIME, MNHTIME_MPI
 
 public :: LFIINT
@@ -37,10 +39,13 @@ public :: LFIINT
 public :: CDFINT, MNHINT_NF90, MNHREAL_NF90
 #endif
 
-
 integer, parameter :: MNHINT32 = selected_int_kind( r = 9 )
 integer, parameter :: MNHINT64 = selected_int_kind( r = 18 )
 
+! There is no standard way to define a 32 or 64-bit logical
+! Therefore, we define only the default MNHLOG type
+integer, parameter :: MNHLOG = kind( .true. )
+
 integer, parameter :: MNHREAL32  = selected_real_kind( p = 6,  r = 37 )
 integer, parameter :: MNHREAL64  = selected_real_kind( p = 15, r = 307 )
 integer, parameter :: MNHREAL128 = selected_real_kind( p = 33, r = 4931 )
@@ -48,6 +53,9 @@ integer, parameter :: MNHREAL128 = selected_real_kind( p = 33, r = 4931 )
 integer, parameter :: MNHINT32_MPI  = MPI_INTEGER4
 integer, parameter :: MNHINT64_MPI  = MPI_INTEGER8
 
+integer, parameter :: MNHLOG32_MPI  = MPI_LOGICAL4
+integer, parameter :: MNHLOG64_MPI  = MPI_LOGICAL8
+
 integer, parameter :: MNHREAL32_MPI  = MPI_REAL4
 integer, parameter :: MNHREAL64_MPI  = MPI_REAL8
 
@@ -56,12 +64,16 @@ integer, parameter :: MNH2REAL64_MPI  = MPI_2DOUBLE_PRECISION
 
 
 ! Kinds for MesoNH
+
+!For logicals, all compilers seem to set the same default size for INTEGER and LOGICAL
 #if ( MNH_INT == 4 )
 integer, parameter :: MNHINT     = MNHINT32
 integer, parameter :: MNHINT_MPI = MNHINT32_MPI
+integer, parameter :: MNHLOG_MPI = MNHLOG32_MPI
 #elif ( MNH_INT == 8 )
 integer, parameter :: MNHINT     = MNHINT64
 integer, parameter :: MNHINT_MPI = MNHINT64_MPI
+integer, parameter :: MNHLOG_MPI = MNHLOG64_MPI
 #else
 #error "Invalid MNH_INT"
 #endif
diff --git a/src/MNH/mode_elec_ll.f90 b/src/MNH/mode_elec_ll.f90
index 0f613fff81e6cdac7597973e73827849d8cf4fd6..084db39dd5ecec2f1b48f1e743e95d9ef328d23c 100644
--- a/src/MNH/mode_elec_ll.f90
+++ b/src/MNH/mode_elec_ll.f90
@@ -21,18 +21,16 @@
 !!    Modifications
 !!    -------------
 !!    Original 08/02/2010
-!!
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!
 !------------------------------------------------------------------------
 !
 USE MODD_MPIF
-use modd_precision, only: MNHREAL_MPI
+use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
 USE MODD_VAR_ll,    ONLY: NMNH_COMM_WORLD
 !
 IMPLICIT NONE
 !
-!include "mpif.h"
-!
-!
 INTEGER, PARAMETER :: IFIRST_PROC = 0   ! 0/1 to increase numerotation of proc number 
 !
 !
@@ -166,7 +164,7 @@ ENDIF
 !
 !*     1.3    broadcast to all proc 
 !
-CALL MPI_ALLREDUCE(KPROC_LOCAL, KPROC,IDIM , MPI_INTEGER, &
+CALL MPI_ALLREDUCE(KPROC_LOCAL, KPROC,IDIM , MNHINT_MPI, &
                    MPI_MAX, NMNH_COMM_WORLD, INFO) 
 !
 END SUBROUTINE RMIN0_ELEC_ll
@@ -216,7 +214,7 @@ ENDIF
 !
 !*     1.3    broadcast to all proc 
 !
-CALL MPI_ALLREDUCE(KPROC_LOCAL, KPROC,IDIM , MPI_INTEGER, &
+CALL MPI_ALLREDUCE(KPROC_LOCAL, KPROC,IDIM , MNHINT_MPI, &
                    MPI_MAX, NMNH_COMM_WORLD, INFO) 
 !
 END SUBROUTINE RMAX0_ELEC_ll
@@ -253,7 +251,7 @@ INFO = -1
 !
 !*     1.1    min(Proc)
 !
-CALL MPI_ALLREDUCE(ITAB, KMIN_INOUT, IDIM, MPI_INTEGER, &
+CALL MPI_ALLREDUCE(ITAB, KMIN_INOUT, IDIM, MNHINT_MPI, &
                    MPI_MIN, NMNH_COMM_WORLD, INFO)
 !
 !*     1.2    find the proc number of the maximum
@@ -266,7 +264,7 @@ ENDIF
 !
 !*     1.3    broadcast to all proc 
 !
-CALL MPI_ALLREDUCE(IPROC_LOCAL, KPROC,IDIM, MPI_INTEGER, &
+CALL MPI_ALLREDUCE(IPROC_LOCAL, KPROC,IDIM, MNHINT_MPI, &
                    MPI_MAX, NMNH_COMM_WORLD, INFO) 
 !
 END SUBROUTINE IMIN0_ELEC_ll
@@ -303,7 +301,7 @@ INFO = -1
 !
 !*     1.1    min(Proc)
 !
-CALL MPI_ALLREDUCE(ITAB, KMAX_INOUT, IDIM, MPI_INTEGER, &
+CALL MPI_ALLREDUCE(ITAB, KMAX_INOUT, IDIM, MNHINT_MPI, &
                    MPI_MAX, NMNH_COMM_WORLD, INFO)
 !
 !*     1.2    find the proc number of the maximum
@@ -316,7 +314,7 @@ ENDIF
 !
 !*     1.3    brodcast to all proc 
 !
-CALL MPI_ALLREDUCE(IPROC_LOCAL, KPROC, IDIM, MPI_INTEGER, &
+CALL MPI_ALLREDUCE(IPROC_LOCAL, KPROC, IDIM, MNHINT_MPI, &
                    MPI_MAX, NMNH_COMM_WORLD, INFO) 
 !
 END SUBROUTINE IMAX0_ELEC_ll
@@ -351,7 +349,7 @@ INFO = -1
 !
 !*     1.1    sum(Proc)
 !
-CALL MPI_ALLREDUCE(ITAB, KSUM_INOUT, IDIM, MPI_INTEGER, &
+CALL MPI_ALLREDUCE(ITAB, KSUM_INOUT, IDIM, MNHINT_MPI, &
                    MPI_SUM, NMNH_COMM_WORLD, INFO)
 !
 END SUBROUTINE ISUM_ELEC_ll
@@ -386,7 +384,7 @@ INFO = -1
 !
 !*     1.1    sum(Proc)
 !
-CALL MPI_ALLREDUCE(ITAB, KSUM_INOUT, IDIM, MPI_INTEGER, &
+CALL MPI_ALLREDUCE(ITAB, KSUM_INOUT, IDIM, MNHINT_MPI, &
                    MPI_SUM, NMNH_COMM_WORLD, INFO)
 !
 END SUBROUTINE ISUM0_ELEC_ll
@@ -477,8 +475,8 @@ JCENT_GLOB = IYOR + JCENT_LOC - 1
 !
 ! The proc with the center of the cell broadcast the global coord of the cell
 !
-CALL MPI_BCAST(ICENT_GLOB, 1, MPI_INTEGER, KPROC_COORD, NMNH_COMM_WORLD, IERR)
-CALL MPI_BCAST(JCENT_GLOB, 1, MPI_INTEGER, KPROC_COORD, NMNH_COMM_WORLD, IERR)
+CALL MPI_BCAST(ICENT_GLOB, 1, MNHINT_MPI, KPROC_COORD, NMNH_COMM_WORLD, IERR)
+CALL MPI_BCAST(JCENT_GLOB, 1, MNHINT_MPI, KPROC_COORD, NMNH_COMM_WORLD, IERR)
 !
 IS_GLOB = KIS + IXOR -1
 IE_GLOB = KIE + IXOR -1
diff --git a/src/MNH/mode_tmat.f90 b/src/MNH/mode_tmat.f90
index 6c22fdabbe8eecbd80297423af55e4db1c8a246c..2196eefd4dd609d9067140fde2e272db9e4a262f 100644
--- a/src/MNH/mode_tmat.f90
+++ b/src/MNH/mode_tmat.f90
@@ -19,6 +19,7 @@
 !  P. Wautelet 22/02/2019: add kind parameter for CMPLX intrinsics (if not it default to single precision)
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 19/04/2019: use kind(0.0d0) instead of kind=8
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !
 !****************************************************************************
 
@@ -593,7 +594,7 @@
             TI1NN=XTI1(N,N)
             TR1NN1=XTR1(N1,N1)
             TI1NN1=XTI1(N1,N1)
-            DN1=FLOAT(2*N+1)
+            DN1=REAL(2*N+1)
             QSCA=QSCA+DN1*(TR1NN*TR1NN+TI1NN*TI1NN+&
                 TR1NN1*TR1NN1+TI1NN1*TI1NN1)
             QEXT=QEXT+(TR1NN+TR1NN1)*DN1
@@ -601,7 +602,7 @@
 !            TI1NN=TI1(N,N)
 !            TR1NN1=TR1(N1,N1)
 !            TI1NN1=TI1(N1,N1)
-!            DN1=FLOAT(2*N+1)
+!            DN1=REAL(2*N+1)
 !            QSCA=QSCA+DN1*(TR1NN*TR1NN+TI1NN*TI1NN+&
 !                TR1NN1*TR1NN1+TI1NN1*TI1NN1)
 !            QEXT=QEXT+(TR1NN+TR1NN1)*DN1
@@ -654,7 +655,7 @@
                TI1NN=XTI1(N,N)
                TR1NN1=XTR1(N1,N1)
                TI1NN1=XTI1(N1,N1)
-               DN1=FLOAT(2*N+1)
+               DN1=REAL(2*N+1)
                QSCA=QSCA+DN1*(TR1NN*TR1NN+TI1NN*TI1NN+&
                     TR1NN1*TR1NN1+TI1NN1*TI1NN1)
                QEXT=QEXT+(TR1NN+TR1NN1)*DN1
@@ -1107,7 +1108,7 @@
             
 !****mclock gives the time of execution (CPU)in centieme of second
 !c            ITIME=MCLOCK()
-!c            TIME=FLOAT(ITIME)/6000D0
+!c            TIME=REAL(ITIME)/6000D0
 !C     WRITE(10,1001)TIME
 !c 1001       FORMAT (' time =',F8.2,' min')
             
@@ -1355,8 +1356,8 @@
       DO NN=1,NMAX
           DO N=1,NMAX
           CN=CI**(NN-N-1)
-          DNN=FLOAT((2*N+1)*(2*NN+1)) 
-          DNN=DNN/FLOAT( N*NN*(N+1)*(NN+1) ) 
+          DNN=REAL((2*N+1)*(2*NN+1)) 
+          DNN=DNN/REAL( N*NN*(N+1)*(NN+1) ) 
           RN=SQRT(DNN)
           CAL(N,NN)=CN*RN
           ENDDO
@@ -1497,9 +1498,9 @@
            D1=1D0
            D2=X  
                DO N=1,NMAX  
-               QN=FLOAT(N)
-               QN1=FLOAT(N+1)
-               QN2=FLOAT(2*N+1)
+               QN=REAL(N)
+               QN1=REAL(N+1)
+               QN2=REAL(2*N+1)
                D3=(QN2*X*D2-QN*D1)/QN1 
                DER=QS1*(QN1*QN/QN2)*(-D1+D3)
                DV1(N)=D2*DSI
@@ -1508,17 +1509,17 @@
                D2=D3
                ENDDO
            ELSE
-           QMM=FLOAT(M*M)
+           QMM=REAL(M*M)
                DO I=1,M
                I2=I*2
-               A=A*SQRT(FLOAT(I2-1)/FLOAT(I2))*QS
+               A=A*SQRT(REAL(I2-1)/REAL(I2))*QS
                ENDDO
            D1=0D0
            D2=A 
                DO N=M,NMAX
-               QN=FLOAT(N)
-               QN2=FLOAT(2*N+1)
-               QN1=FLOAT(N+1)
+               QN=REAL(N)
+               QN2=REAL(2*N+1)
+               QN1=REAL(N+1)
                QNM=SQRT(QN*QN-QMM)
                QNM1=SQRT(QN1*QN1-QMM)
                D3=(QN2*X*D2-QNM*D1)/QNM1
@@ -1533,7 +1534,7 @@
           IF (M.EQ.1) THEN
 
               DO N=1,NMAX
-              DN=FLOAT(N*(N+1))
+              DN=REAL(N*(N+1))
               DN=0.5D0*SQRT(DN)
                   IF (X.LT.0D0) DN=DN*(-1)**(N+1)
               DV1(N)=DN
@@ -1559,8 +1560,8 @@
  
       DO N=1,NMAX
          NN=N*(N+1)
-         AN(N)=FLOAT(NN)
-         D=SQRT(FLOAT(2*N+1)/FLOAT(NN))
+         AN(N)=REAL(NN)
+         D=SQRT(REAL(2*N+1)/REAL(NN))
          DD(N)=D
          DO N1=1,N
             DDD=D*DD(N1)*0.5D0
@@ -1637,8 +1638,8 @@
       if ( NMAX > NPN1 ) call Print_msg( NVERB_FATAL, 'GEN', 'VARY', 'NMAX > NPN1' )
 
       TB=TA*SQRT(MRR*MRR+MRI*MRI)
-      TB=MAX(TB,FLOAT(NMAX))
-      NNMAX1=1.2D0*SQRT(MAX(TA,FLOAT(NMAX)))+3D0
+      TB=MAX(TB,REAL(NMAX))
+      NNMAX1=1.2D0*SQRT(MAX(TA,REAL(NMAX)))+3D0
       NNMAX2=(TB+4D0*(TB**0.33333D0)+1.2D0*SQRT(TB))
       NNMAX2=NNMAX2-NMAX+5
       CALL BESS(Z,ZR,ZI,NG,NMAX,NNMAX1,NNMAX2)
@@ -1723,12 +1724,12 @@
 
       L=NMAX+NNMAX
       XX=1D0/X
-      Z(L)=1D0/(FLOAT(2*L+1)*XX)
+      Z(L)=1D0/(REAL(2*L+1)*XX)
       L1=L-1
 
       DO I=1,L1
       I1=L-I
-      Z(I1)=1D0/(FLOAT(2*I1+1)*XX-Z(I1+1))
+      Z(I1)=1D0/(REAL(2*I1+1)*XX-Z(I1+1))
       ENDDO
 
       Z0=1D0/(XX-Z(1))
@@ -1740,7 +1741,7 @@
       DO I=2,NMAX
       YI1=Y(I-1)
       YI=YI1*Z(I)
-      U(I)=YI1-FLOAT(I)*YI*XX
+      U(I)=YI1-REAL(I)*YI*XX
       Y(I)=YI
       ENDDO
 
@@ -1764,12 +1765,12 @@
       NMAX1=NMAX-1
 
       DO I=2,NMAX1
-      Y(I+1)=FLOAT(2*I+1)*X1*Y(I)-Y(I-1)
+      Y(I+1)=REAL(2*I+1)*X1*Y(I)-Y(I-1)
       ENDDO
 
       V(1)=-X1*(C+Y1)
       DO  I=2,NMAX
-      V(I)=Y(I-1)-FLOAT(I)*X1*Y(I)
+      V(I)=Y(I-1)-REAL(I)*X1*Y(I)
       ENDDO
 
       RETURN
@@ -1796,14 +1797,14 @@
       XRXI=1D0/(XR*XR+XI*XI)
       CXXR=XR*XRXI
       CXXI=-XI*XRXI 
-      QF=1D0/FLOAT(2*L+1)
+      QF=1D0/REAL(2*L+1)
       CZR(L)=XR*QF
       CZI(L)=XI*QF
       L1=L-1
 
       DO I=1,L1
       I1=L-I
-      QF=FLOAT(2*I1+1)
+      QF=REAL(2*I1+1)
       AR=QF*CXXR-CZR(I1+1)
       AI=QF*CXXI-CZI(I1+1)
       ARI=1D0/(AR*AR+AI*AI)
@@ -1838,7 +1839,7 @@
       UI(1)=CU1I
 
       DO I=2,NMAX
-      QI=FLOAT(I)
+      QI=REAL(I)
       CYI1R=CYR(I-1)
       CYI1I=CYI(I-1)
       CYIR=CYI1R*CZR(I)-CYI1I*CZI(I)
@@ -2155,7 +2156,7 @@ DEALLOCATE(IG22)
 !!      COMMON /CTT/ QR,QI,RGQR,RGQI
 
       MM1=M
-      QM=FLOAT(M)
+      QM=REAL(M)
       QMM=QM*QM
 !c      NG=2*NGAUSS
 !c      NGSS=NG
@@ -2471,17 +2472,17 @@ DEALLOCATE(IG22)
       ENDDO   
 
       IF (M.NE.0) THEN
-      QMM=FLOAT(M*M)
+      QMM=REAL(M*M)
           DO I=1,M
           I2=I*2
-          A=A*SQRT(FLOAT(I2-1)/FLOAT(I2))*QS
+          A=A*SQRT(REAL(I2-1)/REAL(I2))*QS
           ENDDO   
       D1=0D0
       D2=A
           DO N=M,NMAX
-          QN=FLOAT(N)
-          QN2=FLOAT(2*N+1)
-          QN1=FLOAT(N+1)
+          QN=REAL(N)
+          QN2=REAL(2*N+1)
+          QN1=REAL(N+1)
           QNM=SQRT(QN*QN-QMM)
           QNM1=SQRT(QN1*QN1-QMM)
           D3=(QN2*X*D2-QNM*D1)/QNM1
@@ -2495,9 +2496,9 @@ DEALLOCATE(IG22)
       D1=1D0
       D2=X  
           DO N=1,NMAX  
-          QN=FLOAT(N)
-          QN1=FLOAT(N+1)
-          QN2=FLOAT(2*N+1)
+          QN=REAL(N)
+          QN1=REAL(N+1)
+          QN2=REAL(2*N+1)
           D3=(QN2*X*D2-QN*D1)/QN1 
           DER=QS1*(QN1*QN/QN2)*(-D1+D3)
           DV1(N)=D2
@@ -2616,7 +2617,7 @@ DEALLOCATE(IG22)
       INTEGER IPVT(NPN1),IND1(NPN1),IND2(NPN1)
 
       NDIM=NPN1
-      NN1=(FLOAT(NMAX)-0.1D0)*0.5D0+1D0 
+      NN1=(REAL(NMAX)-0.1D0)*0.5D0+1D0 
       NN2=NMAX-NN1
       DO I=1,NMAX
       IND1(I)=2*I-1
@@ -2853,7 +2854,7 @@ DEALLOCATE(IG22)
     
       IND=MOD(N,2)
       K=N/2+IND
-      F=FLOAT(N)
+      F=REAL(N)
 
 !*****DO 1
       DO I=1,K
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 12e6b74feee0ee1690c2041dc1a22c7413841360..128897c87ec0514d20b086e6115ad077790ee6ad 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -259,6 +259,7 @@ END MODULE MODI_MODEL_n
 !  P. Wautelet 28/03/2019: use MNHTIME for time measurement variables
 !  P. Wautelet 28/03/2019: use TFILE instead of unit number for set_iluout_timing
 !  P. Wautelet 19/04/2019: removed unused dummy arguments and variables
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -2171,7 +2172,7 @@ IF (OEXIT) THEN
   !
   ! Timing/ Steps
   !
-  ZTIME_STEP     =  XT_START / FLOAT(KTCOUNT)
+  ZTIME_STEP     =  XT_START / REAL(KTCOUNT)
   WRITE(YTCOUNT,FMT="(I0)") KTCOUNT
   CALL TIME_STAT_ll(ZTIME_STEP,ZTOT,     ' SECOND/STEP='//YTCOUNT,'=')
   !
@@ -2179,7 +2180,7 @@ IF (OEXIT) THEN
   !
   IPOINTS = NIMAX_ll*NJMAX_ll*NKMAX
   WRITE(YPOINTS,FMT="(I0)") IPOINTS
-  ZTIME_STEP_PTS =  ZTIME_STEP / FLOAT(IPOINTS) * 1e6
+  ZTIME_STEP_PTS =  ZTIME_STEP / REAL(IPOINTS) * 1e6
   CALL TIME_STAT_ll(ZTIME_STEP_PTS,ZTOT_PT)
   CALL TIME_STAT_ll(ZTIME_STEP_PTS,ZTOT_PT,  ' MICROSEC/STP/PT='//YPOINTS,'-')
   !
diff --git a/src/MNH/neighboravg.f90 b/src/MNH/neighboravg.f90
index 903d0ad280a81063f41477bc28e959b2a46f91d4..30504f7ec0ad634ab3677973ace15ae41c38ab1f 100644
--- a/src/MNH/neighboravg.f90
+++ b/src/MNH/neighboravg.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2018-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !######################
 MODULE MODE_NEIGHBORAVG
 !######################
@@ -21,7 +22,8 @@ SUBROUTINE BLOCKAVG(PMATIN,KDX,KDY,PMATOUT)
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -123,7 +125,7 @@ DO II = 1, KDX-1
 END DO
 
 CALL GET_HALO(ZTMP)
-PMATOUT(:,:,:) = ZTMP(:,:,:) / float(KDX*KDY)
+PMATOUT(:,:,:) = ZTMP(:,:,:) / real(KDX*KDY)
 
 END SUBROUTINE BLOCKAVG
 
@@ -194,7 +196,7 @@ DO IJ = 1 , 2*KDY +1
   ISX = - ISX
 END DO
     
-PMATOUT(:,:,:) = ZSUMP1(:,:,:) / FLOAT((1+2*KDX)*(1+2*KDY))
+PMATOUT(:,:,:) = ZSUMP1(:,:,:) / REAL((1+2*KDX)*(1+2*KDY))
   
 END SUBROUTINE MOVINGAVG
 
diff --git a/src/MNH/num_diff.f90 b/src/MNH/num_diff.f90
index af0265cb623c78bda525b7a84e8929a46a0650cd..e31370e1d27efcd07fc4bf2935357de1c1d4666c 100644
--- a/src/MNH/num_diff.f90
+++ b/src/MNH/num_diff.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$ $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
 !     ####################
       MODULE MODI_NUM_DIFF
 !     ####################
@@ -215,7 +210,8 @@ END MODULE MODI_NUM_DIFF
 !!                 07/09    (C.Lac)        Correction on budget calls
 !!     J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!     J.Escobar : 05/12/2017 : Pb SegFault , correct IF(ONUMDIFTH/OZDIFFU) nesting
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -753,7 +749,7 @@ DO JI = IWZ,IEZ
                           6*PZDIFFU_HALO2%XZZ(JI,JJ,JK) )
 ! Weighting factor for z-diffusion
       ZWGTFAC(JI,JJ,JK) = MAX(0,JK-PZDIFFU_HALO2%NZDI(JI,JJ)+1)/&
-                        FLOAT(PZDIFFU_HALO2%NZDLB-PZDIFFU_HALO2%NZDI(JI,JJ)+1)
+                        REAL(PZDIFFU_HALO2%NZDLB-PZDIFFU_HALO2%NZDI(JI,JJ)+1)
     ENDDO
   ENDDO
 ENDDO
@@ -946,7 +942,7 @@ DO JI = IIB-1,IIE+1
                           6*PZDIFFU_HALO2%XZZ(JI,JJ,JK) )
 ! Weighting factor for z-diffusion
       ZWGTFAC(JI,JJ,JK) = MAX(0,JK-PZDIFFU_HALO2%NZDJ(JI,JJ)+1)/ & 
-                        FLOAT(PZDIFFU_HALO2%NZDLB-PZDIFFU_HALO2%NZDJ(JI,JJ)+1)
+                        REAL(PZDIFFU_HALO2%NZDLB-PZDIFFU_HALO2%NZDJ(JI,JJ)+1)
     ENDDO
   ENDDO
 ENDDO
diff --git a/src/MNH/paspol.f90 b/src/MNH/paspol.f90
index 1fee61de9e295ec065f9a1c75d76538a32cd60b3..3bdc1e191584b6d285e58cc196337271d0ccebe2 100644
--- a/src/MNH/paspol.f90
+++ b/src/MNH/paspol.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2008-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !     ######spl
@@ -60,7 +60,8 @@ END MODULE MODI_PASPOL
 !!    C.Lac 11/11 Remove instant M
 !!    P.Wautelet 28/03/2018 Replace TEMPORAL_DIST by DATETIME_DISTANCE
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!! --------------------------------------------------------------------------
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+! --------------------------------------------------------------------------
 !       
 !!    EXTERNAL
 !!    --------
@@ -218,8 +219,8 @@ IF (GPPFIRSTCALL) THEN
       CALL SM_XYHAT(XLATORI,XLONORI,XPPLAT(JSV),XPPLON(JSV),ZSRCX,ZSRCY)
       II=MAX(MIN(COUNT(XXHAT(:)<ZSRCX),IIU-1),1)
       IJ=MAX(MIN(COUNT(XYHAT(:)<ZSRCY),IJU-1),1)
-      ZSRCI=(ZSRCX-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+FLOAT(II)
-      ZSRCJ=(ZSRCY-XYHAT(IJ))/(XYHAT(IJ+1)-XYHAT(IJ))+FLOAT(IJ)
+      ZSRCI=(ZSRCX-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+REAL(II)
+      ZSRCJ=(ZSRCY-XYHAT(IJ))/(XYHAT(IJ+1)-XYHAT(IJ))+REAL(IJ)
       !
       IPIGI(JSV)=INT(ZSRCI)
       IPIGJ(JSV)=INT(ZSRCJ)
@@ -275,9 +276,9 @@ IF (GPPFIRSTCALL) THEN
 !              IF (CPPINIT(JSV)=='9PT') THEN
                   !
 !                 DO J9PTI= -1,1
-!                    ZX=ABS(FLOAT(J9PTI)*XPI/4.) 
+!                    ZX=ABS(REAL(J9PTI)*XPI/4.) 
 !                    DO J9PTJ= -1,1
-!                       ZY=ABS(FLOAT(J9PTJ)*XPI/4.)
+!                       ZY=ABS(REAL(J9PTJ)*XPI/4.)
 !                       Z9PT(J9PTI,J9PTJ)=COS(ZX)*COS(ZY)
 !                    END DO
 !                 END DO
@@ -315,10 +316,10 @@ IF (GPPFIRSTCALL) THEN
          READ(CPPT2(JSV),'(I4,5I2)') I2YY,I2MM,I2DD,I2HH,I2MN,I2SS
          READ(CPPT3(JSV),'(I4,5I2)') I3YY,I3MM,I3DD,I3HH,I3MN,I3SS
          READ(CPPT4(JSV),'(I4,5I2)') I4YY,I4MM,I4DD,I4HH,I4MN,I4SS
-         Z1SEC=FLOAT(I1SS+I1MN*60+I1HH*3600)
-         Z2SEC=FLOAT(I2SS+I2MN*60+I2HH*3600)
-         Z3SEC=FLOAT(I3SS+I3MN*60+I3HH*3600)
-         Z4SEC=FLOAT(I4SS+I4MN*60+I4HH*3600)
+         Z1SEC=REAL(I1SS+I1MN*60+I1HH*3600)
+         Z2SEC=REAL(I2SS+I2MN*60+I2HH*3600)
+         Z3SEC=REAL(I3SS+I3MN*60+I3HH*3600)
+         Z4SEC=REAL(I4SS+I4MN*60+I4HH*3600)
          !
          ! Chrono relative au debut du rejet en secondes.
          !
diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90
index a722563f12d687a12b26e24453a9b0e8be2c21a8..053f539dbdf11feb18c1e306de71d9aed1e11270 100644
--- a/src/MNH/phys_paramn.f90
+++ b/src/MNH/phys_paramn.f90
@@ -233,6 +233,7 @@ END MODULE MODI_PHYS_PARAM_n
 !  P. Wautelet 28/03/2018: replace TEMPORAL_DIST by DATETIME_DISTANCE
 !  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 28/03/2019: use MNHTIME for time measurement variables
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !!-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -683,7 +684,7 @@ CALL SUNPOS_n   ( XZENITH, ZCOSZEN, ZSINZEN, ZAZIMSOL )
 !
       XFLALWD   (:,:)   = 300.
       DO JSWB=1,NSWB_MNH
-        XDIRFLASWD(:,:,JSWB) = XI0 * MAX(COS(XZENITH(:,:)),0.)/FLOAT(NSWB_MNH)
+        XDIRFLASWD(:,:,JSWB) = XI0 * MAX(COS(XZENITH(:,:)),0.)/REAL(NSWB_MNH)
         XSCAFLASWD(:,:,JSWB) = 0.
       END DO
       XDTHRAD(:,:,:) = 0.
@@ -696,8 +697,8 @@ CALL SUNPOS_n   ( XZENITH, ZCOSZEN, ZSINZEN, ZAZIMSOL )
       ZTIME = MOD(TDTCUR%TIME +XLON0*240., XDAY)
       IHOUR = INT( ZTIME/3600. )
       IF (IHOUR < 0) IHOUR=IHOUR + 24
-      ZDT = ZTIME/3600. - FLOAT(IHOUR)
-      XDIRFLASWD(:,:,:) =(( ZRG_HOUR(IHOUR+1)-ZRG_HOUR(IHOUR) )*ZDT + ZRG_HOUR(IHOUR)) / FLOAT(NSWB_MNH)
+      ZDT = ZTIME/3600. - REAL(IHOUR)
+      XDIRFLASWD(:,:,:) =(( ZRG_HOUR(IHOUR+1)-ZRG_HOUR(IHOUR) )*ZDT + ZRG_HOUR(IHOUR)) / REAL(NSWB_MNH)
       XFLALWD   (:,:)   = (ZRAT_HOUR(IHOUR+1)-ZRAT_HOUR(IHOUR))*ZDT + ZRAT_HOUR(IHOUR)
       DO JSWB=1,NSWB_MNH
         WHERE(ZCOSZEN(:,:)<0.) XDIRFLASWD(:,:,JSWB) = 0.
diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90
index 3422ec0bb0faf09a84b91e15259fc2b29cf7555c..d1cb76877d062a3859452408d7b0c70070885cb4 100644
--- a/src/MNH/prep_ideal_case.f90
+++ b/src/MNH/prep_ideal_case.f90
@@ -316,6 +316,7 @@
 !  P. Wautelet 28/03/2019: use MNHTIME for time measurement variables
 !  P. Wautelet 28/03/2019: use TFILE instead of unit number for set_iluout_timing
 !  P. Wautelet 19/04/2019: removed unused dummy arguments and variables
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -1253,14 +1254,14 @@ ELSE
     CALL GET_DIM_EXT_ll('B',IXDIM,IYDIM)
     IBEG = IXOR-JPHEXT-1
     IEND = IBEG+IXDIM-1
-    XXHAT(:) = (/ (FLOAT(JLOOP)*XDELTAX, JLOOP=IBEG,IEND) /)
+    XXHAT(:) = (/ (REAL(JLOOP)*XDELTAX, JLOOP=IBEG,IEND) /)
     IBEG = IYOR-JPHEXT-1
     IEND = IBEG+IYDIM-1
-    XYHAT(:) = (/ (FLOAT(JLOOP)*XDELTAY, JLOOP=IBEG,IEND) /)
+    XYHAT(:) = (/ (REAL(JLOOP)*XDELTAY, JLOOP=IBEG,IEND) /)
 !
   ELSE
-    XXHAT(:) = (/ (FLOAT(JLOOP-NIB)*XDELTAX, JLOOP=1,NIU) /)
-    XYHAT(:) = (/ (FLOAT(JLOOP-NJB)*XDELTAY, JLOOP=1,NJU) /)
+    XXHAT(:) = (/ (REAL(JLOOP-NIB)*XDELTAX, JLOOP=1,NIU) /)
+    XYHAT(:) = (/ (REAL(JLOOP-NJB)*XDELTAY, JLOOP=1,NJU) /)
   END IF
 END IF
 !
@@ -1289,11 +1290,11 @@ IF (    LEN_TRIM(CPGD_FILE) == 0  .OR. .NOT. LREAD_ZS) THEN
     LFLAT = .FALSE.
     IF(.NOT.L2D) THEN                ! three-dimensional case
       XZS(:,:) = XHMAX  / ( 1.                                           &
-        + ( (SPREAD(XXHAT(1:NIU),2,NJU) - FLOAT(NIZS) * XDELTAX) /XAX ) **2  &
-        + ( (SPREAD(XYHAT(1:NJU),1,NIU) - FLOAT(NJZS) * XDELTAY) /XAY ) **2  ) **1.5
+        + ( (SPREAD(XXHAT(1:NIU),2,NJU) - REAL(NIZS) * XDELTAX) /XAX ) **2  &
+        + ( (SPREAD(XYHAT(1:NJU),1,NIU) - REAL(NJZS) * XDELTAY) /XAY ) **2  ) **1.5
     ELSE                             ! two-dimensional case
       XZS(:,:) = XHMAX  / ( 1.                                          &
-        + ( (SPREAD(XXHAT(1:NIU),2,NJU) - FLOAT(NIZS) * XDELTAX) /XAX ) **2 )
+        + ( (SPREAD(XXHAT(1:NIU),2,NJU) - REAL(NIZS) * XDELTAX) /XAX ) **2 )
     ENDIF
     IF(L1D) THEN                     ! one-dimensional case
       XZS(:,:) = XHMAX 
@@ -1303,7 +1304,7 @@ IF (    LEN_TRIM(CPGD_FILE) == 0  .OR. .NOT. LREAD_ZS) THEN
     LFLAT = .FALSE.
     IF(L2D) THEN                     ! two-dimensional case
       DO JILOOP = 1, NIU
-        ZDIST = XXHAT(JILOOP)-FLOAT(NIZS)*XDELTAX
+        ZDIST = XXHAT(JILOOP)-REAL(NIZS)*XDELTAX
         IF( ABS(ZDIST)<(4.0*XAX) ) THEN
           XZS(JILOOP,:) = (XHMAX/16.0)*( 1.0 + COS((XPI*ZDIST)/(4.0*XAX)) )**4
         ELSE
@@ -1316,7 +1317,7 @@ IF (    LEN_TRIM(CPGD_FILE) == 0  .OR. .NOT. LREAD_ZS) THEN
     LFLAT = .FALSE.
     IF(L2D) THEN                     ! two-dimensional case
       DO JILOOP = 1, NIU
-        ZDIST = XXHAT(JILOOP)-FLOAT(NIZS)*XDELTAX
+        ZDIST = XXHAT(JILOOP)-REAL(NIZS)*XDELTAX
         IF( ABS(ZDIST)<(4.0*XAX) ) THEN
           XZS(JILOOP,:) = XHMAX*EXP(-(ZDIST/XAY)**2)*COS((XPI*ZDIST)/XAX)**2
         ELSE
@@ -1328,12 +1329,12 @@ IF (    LEN_TRIM(CPGD_FILE) == 0  .OR. .NOT. LREAD_ZS) THEN
     LFLAT = .FALSE.
     IF(L2D) THEN                     ! two-dimensional case
       DO JILOOP = 1, NIU
-        ZDIST = XXHAT(JILOOP)-FLOAT(NIZS)*XDELTAX
+        ZDIST = XXHAT(JILOOP)-REAL(NIZS)*XDELTAX
           XZS(JILOOP,:) = XHMAX*(XAX**2)/(XAX**2+ZDIST**2)
       END DO
 		ELSE		! three dimensionnal case - infinite profile in y direction
 			DO JILOOP = 1, NIU
-        ZDIST = XXHAT(JILOOP)-FLOAT(NIZS)*XDELTAX
+        ZDIST = XXHAT(JILOOP)-REAL(NIZS)*XDELTAX
           XZS(JILOOP,:) = XHMAX*(XAX**2)/(XAX**2+ZDIST**2)
       END DO
     ENDIF
diff --git a/src/MNH/prognos.f90 b/src/MNH/prognos.f90
index 569a2aa08c0b7312ed0f4494c4f94895063c5d09..bd1ad8c3ec82b5843ad0d10466ebe3f3c73e9cb8 100644
--- a/src/MNH/prognos.f90
+++ b/src/MNH/prognos.f90
@@ -58,7 +58,8 @@ END MODULE MODI_PROGNOS
 !!     2014 G.Delautier : remplace MODD_RAIN_C2R2_PARAM par MODD_RAIN_C2R2_KHKO_PARAM
 !!     2015 M.Mazoyer and O.Thouron : Physical tunings
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -120,10 +121,10 @@ IVEC2(:) =0.0
 !
 DO J1 = 1,4
   WHERE (PS0(:).GT.0.0)
-   ZVEC2(:) = MAX( 1.00001, MIN( FLOAT(NHYP)-0.00001,      &
+   ZVEC2(:) = MAX( 1.00001, MIN( REAL(NHYP)-0.00001,      &
                    XHYPINTP1*LOG(PS0(:))+XHYPINTP2 ) )
    IVEC2(:) = INT( ZVEC2(:) )
-   ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) )
+   ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) )
   END WHERE
 END DO
 ZZW1(:) =0.0
diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90
index 5ba7853d4e07073b95db0db7c42d82e4ddde4e8d..531637f10cc37a1b65b4a345a40860d85a256822 100644
--- a/src/MNH/radiations.f90
+++ b/src/MNH/radiations.f90
@@ -120,6 +120,7 @@ CONTAINS
 !!      P.Wautelet 22/01/2019: use standard FLUSH statement instead of non standard intrinsics
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -1207,7 +1208,7 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN
   GCLEAR(:,:) = SPREAD( GCLEAR_2D(:),DIM=2,NCOPIES=KFLEV )  ! vertical extension of clear columns 2D map
   ICLOUD_COL = KDLON - ICLEAR_COL                           ! number of  cloudy columns
 !
-  ZCLEAR_COL_ll = FLOAT(ICLEAR_COL)
+  ZCLEAR_COL_ll = REAL(ICLEAR_COL)
   CALL REDUCESUM_ll(ZCLEAR_COL_ll,IINFO_ll)
   !ZDLON_ll = KDLON
   !CALL REDUCESUM_ll(ZDLON_ll,IINFO_ll)
@@ -2038,7 +2039,7 @@ ELSE
 !
 ! the splitting of the arrays will be performed
 !
-  INUM_CALL = CEILING( FLOAT( IDIM ) / FLOAT( KRAD_COLNBR ) )
+  INUM_CALL = CEILING( REAL( IDIM ) / REAL( KRAD_COLNBR ) )
   IDIM_RESIDUE = IDIM
 !
   DO JI_SPLIT = 1 , INUM_CALL
diff --git a/src/MNH/radtr_satel.f90 b/src/MNH/radtr_satel.f90
index 394f11794c5c952137967648016492cab7b9a1e3..357b7941c06927cdbf7b1ed5e01627d7a97f3adc 100644
--- a/src/MNH/radtr_satel.f90
+++ b/src/MNH/radtr_satel.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2000-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source: /srv/cvsroot/MNH-VX-Y-Z/src/MNH/radtr_satel.f90,v $ $Revision: 1.2.4.1.16.1.2.2 $
-!-----------------------------------------------------------------
 !    #######################
      MODULE MODI_RADTR_SATEL 
 !    #######################
@@ -106,6 +102,7 @@ END MODULE MODI_RADTR_SATEL
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!      G.Delautier 04/2016 : BUG JPHEXT
 !!      S. Riette 11/2016 : Condensation interface changed
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -625,7 +622,7 @@ ELSE
    !
    ! the splitting of the arrays will be performed
    !
-   INUM_CALL = CEILING( FLOAT( IDIM ) / FLOAT( KRAD_COLNBR ) )
+   INUM_CALL = CEILING( REAL( IDIM ) / REAL( KRAD_COLNBR ) )
    IDIM_RESIDUE = IDIM
    DO JI_SPLIT = 1 , INUM_CALL
      IDIM_EFF = MIN( IDIM_RESIDUE,KRAD_COLNBR )
diff --git a/src/MNH/rain_c2r2_khko.f90 b/src/MNH/rain_c2r2_khko.f90
index 9139c89873568bf187fae069ad7787aa6f7557aa..75a99204c9dbc033eaeaaaad7fcff9da866c9705 100644
--- a/src/MNH/rain_c2r2_khko.f90
+++ b/src/MNH/rain_c2r2_khko.f90
@@ -213,6 +213,7 @@ END MODULE MODI_RAIN_C2R2_KHKO
 !!      C.Lac     : 07/2016 : Add droplet deposition
 !!      C.Lac     : 01/2017 : Correction on droplet deposition
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -522,7 +523,7 @@ IF (LBUDGET_SV) &
 !*       6.1 Calculation of the mean volumic radius (ZRAY) and
 !             the terminal vertical velocity ZCC for precipitating clouds
 !
-ZTSPLITR = PTSTEP / FLOAT(KSPLITR)       ! Small time step
+ZTSPLITR = PTSTEP / REAL(KSPLITR)       ! Small time step
 !
 !
 !*       6.2    compute the sedimentation velocities for rain
@@ -686,10 +687,10 @@ INUCT = COUNTJV( GNUCT(:,:,:),I1(:),I2(:),I3(:))
 !
 !*       3.1.1   compute the constant term (ZZW3)
 !
-  ZVEC1(:) = MAX( 1.00001, MIN( FLOAT(NAHEN)-0.00001, &
+  ZVEC1(:) = MAX( 1.00001, MIN( REAL(NAHEN)-0.00001, &
                   XAHENINTP1 * ZZT(:) + XAHENINTP2 )  )
   IVEC1(:) = INT( ZVEC1(:) )
-  ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) )
+  ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) )
   ALLOCATE(ZSMAX(INUCT))
 !
 !
@@ -771,10 +772,10 @@ INUCT = COUNTJV( GNUCT(:,:,:),I1(:),I2(:),I3(:))
     IF( HPARAM_CCN == 'CPB' ) THEN
       DO J1 = 1,4
        WHERE (ZZW5(:) > 0.)
-        ZVEC1(:) = MAX( 1.00001, MIN( FLOAT(NHYP)-0.00001,      &
+        ZVEC1(:) = MAX( 1.00001, MIN( REAL(NHYP)-0.00001,      &
                         XHYPINTP1*LOG(ZSMAX(:))+XHYPINTP2 ) )
         IVEC1(:) = INT( ZVEC1(:) )
-        ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) )
+        ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) )
         ZZW2(:)  =   XHYPF32( IVEC1(:)+1 )* ZVEC1(:)      &
                    - XHYPF32( IVEC1(:)   )*(ZVEC1(:) - 1.0)
         ZSMAX(:) = (ZZW3(:)/ZZW2(:))**(1.0/(XKHEN+2.0))
diff --git a/src/MNH/rain_ice_elec.f90 b/src/MNH/rain_ice_elec.f90
index ebbe39dde701aa0c48aa31f18a0c07b5311d8532..94b30788ff570b25117a6e7bb67f51d929b3d364 100644
--- a/src/MNH/rain_ice_elec.f90
+++ b/src/MNH/rain_ice_elec.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 2002-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !      #########################
@@ -225,7 +225,8 @@ END MODULE MODI_RAIN_ICE_ELEC
 !!         J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!         J.Escobar : 10/2017 : for real*4 , limit exp() in RAIN_ICE_ELEC_SLOW with XMNH_HUGE_12_LOG
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -1254,7 +1255,7 @@ END IF
 !
 !*       8.1    time splitting loop initialization
 !
-ZTSPLITR = PTSTEP / FLOAT(KSPLITR)
+ZTSPLITR = PTSTEP / REAL(KSPLITR)
 !
 !
 IF (CSEDIM == 'STAT') THEN
@@ -2974,10 +2975,10 @@ IMPLICIT NONE
 !*              set of Lbda_s used to tabulate some moments of the incomplete 
 !               gamma function
 !
-    ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( FLOAT(NGAMINC)-0.00001,           &
+    ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( REAL(NGAMINC)-0.00001,           &
                           XRIMINTP1 * LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) )
     IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) )
-    ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) )
+    ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) )
 !
 !*       5.1.3  perform the linear interpolation of the normalized
 !*              "2+XDS"-moment of the incomplete gamma function
@@ -3125,15 +3126,15 @@ IMPLICIT NONE
 !               in the geometrical set of (Lbda_s,Lbda_r) couplet use to
 !               tabulate the RACCSS-kernel
 !
-    ZVEC1(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAS)-0.00001,           &
+    ZVEC1(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAS)-0.00001,           &
                           XACCINTP1S * LOG( ZVEC1(1:IGACC) ) + XACCINTP2S ) )
     IVEC1(1:IGACC) = INT( ZVEC1(1:IGACC) )
-    ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - FLOAT( IVEC1(1:IGACC) )
+    ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - REAL( IVEC1(1:IGACC) )
 !
-    ZVEC2(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAR)-0.00001,           &
+    ZVEC2(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAR)-0.00001,           &
                           XACCINTP1R * LOG( ZVEC2(1:IGACC) ) + XACCINTP2R ) )
     IVEC2(1:IGACC) = INT( ZVEC2(1:IGACC) )
-    ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - FLOAT( IVEC2(1:IGACC) )
+    ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - REAL( IVEC2(1:IGACC) )
 !
 !        5.2.3  perform the bilinear interpolation of the normalized
 !               RACCSS-kernel
@@ -3467,15 +3468,15 @@ IMPLICIT NONE
 !                 in the geometrical set of (Lbda_g,Lbda_s) couplet use to
 !                 tabulate the SDRYG-kernel
 !
-    ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001,           &
+    ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAG)-0.00001,           &
                           XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) )
     IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) )
-    ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) )
+    ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) )
 !
-    ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAS)-0.00001,           &
+    ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAS)-0.00001,           &
                           XDRYINTP1S * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2S ) )
     IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) )
-    ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) )
+    ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) )
 !
 !        6.2.3.4  perform the bilinear interpolation of the normalized
 !                 SDRYG-kernel
@@ -3582,15 +3583,15 @@ IMPLICIT NONE
 !                 in the geometrical set of (Lbda_g,Lbda_r) couplet use to
 !                 tabulate the RDRYG-kernel
 !
-    ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001,           &
+    ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAG)-0.00001,           &
                           XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) )
     IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) )
-    ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) )
+    ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) )
 !
-    ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAR)-0.00001,           &
+    ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAR)-0.00001,           &
                           XDRYINTP1R * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2R ) )
     IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) )
-    ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) )
+    ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) )
 !
 !        6.2.4.4  perform the bilinear interpolation of the normalized
 !                 RDRYG-kernel
@@ -3966,15 +3967,15 @@ IMPLICIT NONE
 !               in the geometrical set of (Lbda_h,Lbda_s) couplet use to
 !               tabulate the SWETH-kernel
 !
-      ZVEC1(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAH)-0.00001,           &
+      ZVEC1(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAH)-0.00001,           &
                             XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) )
       IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) )
-      ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) )
+      ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) )
 !
-      ZVEC2(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAS)-0.00001,           &
+      ZVEC2(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAS)-0.00001,           &
                             XWETINTP1S * LOG( ZVEC2(1:IGWET) ) + XWETINTP2S ) )
       IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) )
-      ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) )
+      ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) )
 !
 !*       7.2.5  perform the bilinear interpolation of the normalized
 !               SWETH-kernel
@@ -4021,15 +4022,15 @@ IMPLICIT NONE
 !               in the geometrical set of (Lbda_h,Lbda_g) couplet use to
 !               tabulate the GWETH-kernel
 !
-      ZVEC1(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAG)-0.00001,           &
+      ZVEC1(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAG)-0.00001,           &
                             XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) )
       IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) )
-      ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) )
+      ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) )
 !
-      ZVEC2(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAG)-0.00001,           &
+      ZVEC2(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAG)-0.00001,           &
                             XWETINTP1G * LOG( ZVEC2(1:IGWET) ) + XWETINTP2G ) )
       IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) )
-      ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) )
+      ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) )
 !
 !*       7.2.10 perform the bilinear interpolation of the normalized
 !               GWETH-kernel
@@ -5066,31 +5067,31 @@ REAL, DIMENSION(:), INTENT(INOUT) :: ZDQLWC_AUX  ! q= f(RAR or EW,T) in Saunders
   ZDQLWC_OPT(:) = PACK( ZDQLWC_AUX(:), MASK=GSAUN )
 !
 ! Temperature index (0C --> -40C)
-  ZVEC1(1:IGSAUN) = MAX( 1.00001, MIN( FLOAT(NIND_TEMP)-0.00001, &
+  ZVEC1(1:IGSAUN) = MAX( 1.00001, MIN( REAL(NIND_TEMP)-0.00001, &
                                      (ZVEC1(1:IGSAUN) - XTT - 1.)/(-1.) ) )
   IVEC1(1:IGSAUN) = INT( ZVEC1(1:IGSAUN) )
-  ZVEC1(1:IGSAUN) = ZVEC1(1:IGSAUN) - FLOAT(IVEC1(1:IGSAUN))
+  ZVEC1(1:IGSAUN) = ZVEC1(1:IGSAUN) - REAL(IVEC1(1:IGSAUN))
 !
 ! LWC index (0.01 g.m^-3 --> 10 g.m^-3)
   WHERE (ZVEC2(:) >= 0.01 .AND. ZVEC2(:) < 0.1)
-    ZVEC2(:) = MAX( 1.00001, MIN( FLOAT(10)-0.00001, &
+    ZVEC2(:) = MAX( 1.00001, MIN( REAL(10)-0.00001, &
                                   ZVEC2(:) * 100. ))
     IVEC2(:) = INT(ZVEC2(:))
-    ZVEC2(:) = ZVEC2(:) - FLOAT(IVEC2(:))
+    ZVEC2(:) = ZVEC2(:) - REAL(IVEC2(:))
   ENDWHERE
 !
   WHERE (ZVEC2(:) >= 0.1 .AND. ZVEC2(:) < 1. .AND. IVEC2(:) == 0)
-    ZVEC2(:) = MAX( 10.00001, MIN( FLOAT(19)-0.00001, &
+    ZVEC2(:) = MAX( 10.00001, MIN( REAL(19)-0.00001, &
                                    ZVEC2(:) * 10. + 9. ) )
     IVEC2(:) = INT(ZVEC2(:))
-    ZVEC2(:) = ZVEC2(:) - FLOAT(IVEC2(:))
+    ZVEC2(:) = ZVEC2(:) - REAL(IVEC2(:))
   ENDWHERE
 !
   WHERE ((ZVEC2(:) >= 1.) .AND. ZVEC2(:) <= 10.)
-    ZVEC2(:) = MAX( 19.00001, MIN( FLOAT(NIND_LWC)-0.00001, &
+    ZVEC2(:) = MAX( 19.00001, MIN( REAL(NIND_LWC)-0.00001, &
                                    ZVEC2(:) + 18. ) )
     IVEC2(:) = INT(ZVEC2(:))
-    ZVEC2(:) = ZVEC2(:) - FLOAT(IVEC2(:))
+    ZVEC2(:) = ZVEC2(:) - REAL(IVEC2(:))
   ENDWHERE
 !
 ! Interpolate XSAUNDER
@@ -5132,31 +5133,31 @@ REAL, DIMENSION(NIND_LWC+1,NIND_TEMP+1) :: XTAKA_AUX  !XMANSELL or XTAKA_TM)
   ZDQTAKA_OPT(:) = PACK( ZDQTAKA_AUX(:), MASK=GTAKA )
 !
 ! Temperature index (0C --> -40C)
-  ZVEC1(1:IGTAKA) = MAX( 1.00001, MIN( FLOAT(NIND_TEMP)-0.00001, &
+  ZVEC1(1:IGTAKA) = MAX( 1.00001, MIN( REAL(NIND_TEMP)-0.00001, &
                                      (ZVEC1(1:IGTAKA) - XTT - 1.)/(-1.) ) )
   IVEC1(1:IGTAKA) = INT( ZVEC1(1:IGTAKA) )
-  ZVEC1(1:IGTAKA) = ZVEC1(1:IGTAKA) - FLOAT(IVEC1(1:IGTAKA))
+  ZVEC1(1:IGTAKA) = ZVEC1(1:IGTAKA) - REAL(IVEC1(1:IGTAKA))
 !
 ! LWC index (0.01 g.m^-3 --> 10 g.m^-3)
   WHERE (ZVEC2(:) >= 0.01 .AND. ZVEC2(:) < 0.1)
-    ZVEC2(:) = MAX( 1.00001, MIN( FLOAT(10)-0.00001, &
+    ZVEC2(:) = MAX( 1.00001, MIN( REAL(10)-0.00001, &
                                   ZVEC2(:) * 100. ))
     IVEC2(:) = INT(ZVEC2(:))
-    ZVEC2(:) = ZVEC2(:) - FLOAT(IVEC2(:))
+    ZVEC2(:) = ZVEC2(:) - REAL(IVEC2(:))
   ENDWHERE
 !
   WHERE (ZVEC2(:) >= 0.1 .AND. ZVEC2(:) < 1. .AND. IVEC2(:) == 0)
-    ZVEC2(:) = MAX( 10.00001, MIN( FLOAT(19)-0.00001, &
+    ZVEC2(:) = MAX( 10.00001, MIN( REAL(19)-0.00001, &
                                    ZVEC2(:) * 10. + 9. ) )
     IVEC2(:) = INT(ZVEC2(:))
-    ZVEC2(:) = ZVEC2(:) - FLOAT(IVEC2(:))
+    ZVEC2(:) = ZVEC2(:) - REAL(IVEC2(:))
   ENDWHERE
 !
   WHERE (ZVEC2(:) >= 1. .AND. ZVEC2(:) <= 10.)
-    ZVEC2(:) = MAX( 19.00001, MIN( FLOAT(NIND_LWC)-0.00001, &
+    ZVEC2(:) = MAX( 19.00001, MIN( REAL(NIND_LWC)-0.00001, &
                                    ZVEC2(:) + 18. ) )
     IVEC2(:) = INT(ZVEC2(:))
-    ZVEC2(:) = ZVEC2(:) - FLOAT(IVEC2(:))
+    ZVEC2(:) = ZVEC2(:) - REAL(IVEC2(:))
   ENDWHERE
 !
 ! Interpolate XMANSELL or XTAKA_TM
diff --git a/src/MNH/rain_ice_fast_rg.f90 b/src/MNH/rain_ice_fast_rg.f90
index 4a7bfd9dbff3b3a74c4e51173a0fc020d9c18870..c6bcad458060b288b5c6807a3fd8fa7c067d4808 100644
--- a/src/MNH/rain_ice_fast_rg.f90
+++ b/src/MNH/rain_ice_fast_rg.f90
@@ -5,6 +5,7 @@
 !-----------------------------------------------------------------
 ! Modifications:
 !  P. Wautelet 25/02/2019: split rain_ice (cleaner and easier to maintain/debug)
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-----------------------------------------------------------------
 MODULE MODE_RAIN_ICE_FAST_RG
 
@@ -188,15 +189,15 @@ END IF
 !               in the geometrical set of (Lbda_g,Lbda_s) couplet use to
 !               tabulate the SDRYG-kernel
 !
-    ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001,           &
+    ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAG)-0.00001,           &
                           XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) )
     IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) )
-    ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) )
+    ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) )
 !
-    ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAS)-0.00001,           &
+    ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAS)-0.00001,           &
                           XDRYINTP1S * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2S ) )
     IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) )
-    ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) )
+    ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) )
 !
 !*       6.2.5  perform the bilinear interpolation of the normalized
 !               SDRYG-kernel
@@ -251,15 +252,15 @@ END IF
 !               in the geometrical set of (Lbda_g,Lbda_r) couplet use to
 !               tabulate the RDRYG-kernel
 !
-    ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001,           &
+    ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAG)-0.00001,           &
                           XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) )
     IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) )
-    ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) )
+    ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) )
 !
-    ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAR)-0.00001,           &
+    ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAR)-0.00001,           &
                           XDRYINTP1R * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2R ) )
     IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) )
-    ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) )
+    ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) )
 !
 !*       6.2.10 perform the bilinear interpolation of the normalized
 !               RDRYG-kernel
diff --git a/src/MNH/rain_ice_fast_rh.f90 b/src/MNH/rain_ice_fast_rh.f90
index 5b95f2c1a062a05168e7291202038796e1f4d8ae..178dcc779457fdb1b7bcdf289c00bc87caed6334 100644
--- a/src/MNH/rain_ice_fast_rh.f90
+++ b/src/MNH/rain_ice_fast_rh.f90
@@ -5,6 +5,7 @@
 !-----------------------------------------------------------------
 ! Modifications:
 !  P. Wautelet 25/02/2019: split rain_ice (cleaner and easier to maintain/debug)
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-----------------------------------------------------------------
 MODULE MODE_RAIN_ICE_FAST_RH
 
@@ -161,15 +162,15 @@ END IF
 !               in the geometrical set of (Lbda_h,Lbda_s) couplet use to
 !               tabulate the SWETH-kernel
 !
-      ZVEC1(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAH)-0.00001,           &
+      ZVEC1(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAH)-0.00001,           &
                             XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) )
       IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) )
-      ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) )
+      ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) )
 !
-      ZVEC2(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAS)-0.00001,           &
+      ZVEC2(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAS)-0.00001,           &
                             XWETINTP1S * LOG( ZVEC2(1:IGWET) ) + XWETINTP2S ) )
       IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) )
-      ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) )
+      ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) )
 !
 !*       7.2.5  perform the bilinear interpolation of the normalized
 !               SWETH-kernel
@@ -223,15 +224,15 @@ END IF
 !               in the geometrical set of (Lbda_h,Lbda_g) couplet use to
 !               tabulate the GWETH-kernel
 !
-      ZVEC1(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAG)-0.00001,           &
+      ZVEC1(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAG)-0.00001,           &
                             XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) )
       IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) )
-      ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) )
+      ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) )
 !
-      ZVEC2(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAG)-0.00001,           &
+      ZVEC2(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAG)-0.00001,           &
                             XWETINTP1G * LOG( ZVEC2(1:IGWET) ) + XWETINTP2G ) )
       IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) )
-      ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) )
+      ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) )
 !
 !*       7.2.10 perform the bilinear interpolation of the normalized
 !               GWETH-kernel
diff --git a/src/MNH/rain_ice_fast_rs.f90 b/src/MNH/rain_ice_fast_rs.f90
index 620c7ecd66a77f750e4e06fc0bcbf571e069825e..335c322b01efb51df04e9e0c4c883c8735df0c3a 100644
--- a/src/MNH/rain_ice_fast_rs.f90
+++ b/src/MNH/rain_ice_fast_rs.f90
@@ -5,6 +5,7 @@
 !-----------------------------------------------------------------
 ! Modifications:
 !  P. Wautelet 25/02/2019: split rain_ice (cleaner and easier to maintain/debug)
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-----------------------------------------------------------------
 MODULE MODE_RAIN_ICE_FAST_RS
 
@@ -131,10 +132,10 @@ END IF
 !               set of Lbda_s used to tabulate some moments of the incomplete
 !               gamma function
 !
-    ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( FLOAT(NGAMINC)-0.00001,           &
+    ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( REAL(NGAMINC)-0.00001,           &
                           XRIMINTP1 * LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) )
     IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) )
-    ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) )
+    ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) )
 !
 !        5.1.3  perform the linear interpolation of the normalized
 !               "2+XDS"-moment of the incomplete gamma function
@@ -222,15 +223,15 @@ END IF
 !               in the geometrical set of (Lbda_s,Lbda_r) couplet use to
 !               tabulate the RACCSS-kernel
 !
-    ZVEC1(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAS)-0.00001,           &
+    ZVEC1(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAS)-0.00001,           &
                           XACCINTP1S * LOG( ZVEC1(1:IGACC) ) + XACCINTP2S ) )
     IVEC1(1:IGACC) = INT( ZVEC1(1:IGACC) )
-    ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - FLOAT( IVEC1(1:IGACC) )
+    ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - REAL( IVEC1(1:IGACC) )
 !
-    ZVEC2(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAR)-0.00001,           &
+    ZVEC2(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAR)-0.00001,           &
                           XACCINTP1R * LOG( ZVEC2(1:IGACC) ) + XACCINTP2R ) )
     IVEC2(1:IGACC) = INT( ZVEC2(1:IGACC) )
-    ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - FLOAT( IVEC2(1:IGACC) )
+    ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - REAL( IVEC2(1:IGACC) )
 !
 !        5.2.3  perform the bilinear interpolation of the normalized
 !               RACCSS-kernel
diff --git a/src/MNH/rain_ice_sedimentation_split.f90 b/src/MNH/rain_ice_sedimentation_split.f90
index bdcb2b7f11dd170e2e34c931bef1302ba8c6f2ec..a2179af6106a9b0c82f57bb2a29ef6b6e835506b 100644
--- a/src/MNH/rain_ice_sedimentation_split.f90
+++ b/src/MNH/rain_ice_sedimentation_split.f90
@@ -5,6 +5,7 @@
 !-----------------------------------------------------------------
 ! Modifications:
 !  P. Wautelet 25/02/2019: split rain_ice (cleaner and easier to maintain/debug)
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-----------------------------------------------------------------
 MODULE MODE_RAIN_ICE_SEDIMENTATION_SPLIT
 
@@ -173,7 +174,7 @@ END IF
 !        O. Initialization of for sedimentation
 !
 ZINVTSTEP=1./PTSTEP
-ZTSPLITR= PTSTEP / FLOAT(KSPLITR)
+ZTSPLITR= PTSTEP / REAL(KSPLITR)
 !
 IF (OSEDIC) PINPRC (:,:) = 0.
 IF (ODEPOSC) PINDEP (:,:) = 0.
diff --git a/src/MNH/read_ver_grid.f90 b/src/MNH/read_ver_grid.f90
index e9d83fe22a861c9cdba80ad3e0c4cf3c2abf1221..fb5ee72d1c296ff35af91332ed411b137b151bb0 100644
--- a/src/MNH/read_ver_grid.f90
+++ b/src/MNH/read_ver_grid.f90
@@ -96,6 +96,7 @@ END MODULE MODI_READ_VER_GRID
 !!                  Oct, 25, 1996 (V.Masson) deallocations
 !!                  Oct. 10, 2001 (I.Mallet) allow namelists in different orders
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -255,7 +256,7 @@ CASE('FUNCTN')
   IF (.NOT. ASSOCIATED(XZHAT)) ALLOCATE(XZHAT(IKU))
 !
   IF (ABS(ZDZTOP-ZDZGRD) < 1.E-10) THEN
-    XZHAT(:) = (/ (FLOAT(JK-IKB)*ZDZGRD, JK=1,IKU) /)
+    XZHAT(:) = (/ (REAL(JK-IKB)*ZDZGRD, JK=1,IKU) /)
 !
   ELSE
     IF (ZDZGRD>ZDZTOP) THEN
diff --git a/src/MNH/relax.f90 b/src/MNH/relax.f90
index 06a046ebdbe1f1a73e8776ba30f19c70abaeeadb..421ab85c76011d9cff614344b3a3d0f40c54e54c 100644
--- a/src/MNH/relax.f90
+++ b/src/MNH/relax.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 init 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     ##################
       MODULE MODI_RELAX
 !     ##################
@@ -71,6 +66,7 @@ END MODULE MODI_RELAX
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    18/03/96
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -103,7 +99,7 @@ REAL :: ZFCT            ! Peridot coefficient
 !          Peridot profile
 !
 ZFCT = 0.45339
-ZNBR = FLOAT(KB)*(1.-PA)
+ZNBR = REAL(KB)*(1.-PA)
 PRELAX = MIN(2.,ZFCT**ZNBR) 
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/relaxdef.f90 b/src/MNH/relaxdef.f90
index d4579df4862ca24ca738fed7fd57f1eb3223f4e8..41665139b06cfe2cdd71187dbf66dba9ac34f17a 100644
--- a/src/MNH/relaxdef.f90
+++ b/src/MNH/relaxdef.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     ####################
       MODULE MODI_RELAXDEF
 !     ####################
@@ -227,6 +228,7 @@ END MODULE MODI_RELAXDEF
 !!      V. Masson, C.Lac 09/2010 reproducibility : replacement of SUM3D_ll to SUMALL_ll
 !!                             and of PZZ(IIB,IJB,IKE+1) to PZHAT(IKE+1)
 !!      J.Escobar   30/09/2010  introduction of CPP MACRO(REAL16) for reproductibility test 
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -505,12 +507,12 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) &
 !*       4.1   some settings
 !
   IF ( KRIMX /= 0 ) THEN 
-    ZXDEPTH  = (1.0/FLOAT(KRIMX))**2
+    ZXDEPTH  = (1.0/REAL(KRIMX))**2
   ELSE
     ZXDEPTH  = 0.
   END IF
   IF ( KRIMY /= 0 ) THEN 
-    ZYDEPTH  = (1.0/FLOAT(KRIMY))**2
+    ZYDEPTH  = (1.0/REAL(KRIMY))**2
   ELSE
     ZYDEPTH  = 0.
   END IF
@@ -575,14 +577,14 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) &
 !
     DO JJ=IJBINT,IJSENDINT
       !  in global landmarks
-      ZYUPOS = (FLOAT(JJ+IORY-1 - IJSEND_ll) + 0.5)**2
-      ZYVPOS = (FLOAT(JJ+IORY-1 - IJSEND_ll)      )**2
-      ZYWPOS = (FLOAT(JJ+IORY-1 - IJSEND_ll) + 0.5)**2
+      ZYUPOS = (REAL(JJ+IORY-1 - IJSEND_ll) + 0.5)**2
+      ZYVPOS = (REAL(JJ+IORY-1 - IJSEND_ll)      )**2
+      ZYWPOS = (REAL(JJ+IORY-1 - IJSEND_ll) + 0.5)**2
       !
       DO JI=IIBINT,IIWENDINT-1
-        ZXUPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)     )**2
-        ZXVPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)+ 0.5)**2
-        ZXWPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)+ 0.5)**2
+        ZXUPOS = (REAL(JI+IORX-1 - IIWEND_ll)     )**2
+        ZXVPOS = (REAL(JI+IORX-1 - IIWEND_ll)+ 0.5)**2
+        ZXWPOS = (REAL(JI+IORX-1 - IIWEND_ll)+ 0.5)**2
         !
         ZPOS = MIN(1.,SQRT(ZXUPOS*ZXDEPTH+ZYUPOS*ZYDEPTH))
         PKURELAX(JI,JJ) = PRIMKMAX*RELAX(ZPOS,IKRIMAX)
@@ -606,9 +608,9 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) &
       END DO
       !
       DO JI=IIEENDINT,IIEINT
-        ZXUPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)     )**2
-        ZXVPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)+ 0.5)**2
-        ZXWPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)+ 0.5)**2
+        ZXUPOS = (REAL(JI+IORX-1 - IIEEND_ll)     )**2
+        ZXVPOS = (REAL(JI+IORX-1 - IIEEND_ll)+ 0.5)**2
+        ZXWPOS = (REAL(JI+IORX-1 - IIEEND_ll)+ 0.5)**2
         !
         ZPOS = MIN(1.,SQRT(ZXUPOS*ZXDEPTH+ZYUPOS*ZYDEPTH))
         PKURELAX(JI,JJ) = PRIMKMAX*RELAX(ZPOS,IKRIMAX)
@@ -642,14 +644,14 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) &
 !
     DO JJ=IJNENDINT,IJEINT
       ! in global landmarks
-      ZYUPOS = (FLOAT(JJ+IORY-1 - IJNEND_ll) + 0.5)**2
-      ZYVPOS = (FLOAT(JJ+IORY-1 - IJNEND_ll)      )**2
-      ZYWPOS = (FLOAT(JJ+IORY-1 - IJNEND_ll) + 0.5)**2
+      ZYUPOS = (REAL(JJ+IORY-1 - IJNEND_ll) + 0.5)**2
+      ZYVPOS = (REAL(JJ+IORY-1 - IJNEND_ll)      )**2
+      ZYWPOS = (REAL(JJ+IORY-1 - IJNEND_ll) + 0.5)**2
       !
       DO JI=IIBINT,IIWENDINT-1
-        ZXUPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)     )**2
-        ZXVPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)+ 0.5)**2
-        ZXWPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)+ 0.5)**2
+        ZXUPOS = (REAL(JI+IORX-1 - IIWEND_ll)     )**2
+        ZXVPOS = (REAL(JI+IORX-1 - IIWEND_ll)+ 0.5)**2
+        ZXWPOS = (REAL(JI+IORX-1 - IIWEND_ll)+ 0.5)**2
         !
         ZPOS = MIN(1.,SQRT(ZXUPOS*ZXDEPTH+ZYUPOS*ZYDEPTH))
         PKURELAX(JI,JJ) = PRIMKMAX*RELAX(ZPOS,IKRIMAX)
@@ -674,9 +676,9 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) &
       END DO
       !
       DO JI=IIEENDINT,IIEINT
-        ZXUPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)     )**2
-        ZXVPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)+ 0.5)**2
-        ZXWPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)+ 0.5)**2
+        ZXUPOS = (REAL(JI+IORX-1 - IIEEND_ll)     )**2
+        ZXVPOS = (REAL(JI+IORX-1 - IIEEND_ll)+ 0.5)**2
+        ZXWPOS = (REAL(JI+IORX-1 - IIEEND_ll)+ 0.5)**2
         !
         ZPOS = MIN(1.,SQRT(ZXUPOS*ZXDEPTH+ZYUPOS*ZYDEPTH))
         PKURELAX(JI,JJ) = PRIMKMAX*RELAX(ZPOS,IKRIMAX)
@@ -701,9 +703,9 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) &
     ! intersection limits : IIBINT,IIWENDINT along x and IJSENDINT,IJNENDINT along y
 !   
     DO JI=IIBINT,IIWENDINT
-      ZXUPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)     )**2
-      ZXVPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)+ 0.5)**2
-      ZXWPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)+ 0.5)**2
+      ZXUPOS = (REAL(JI+IORX-1 - IIWEND_ll)     )**2
+      ZXVPOS = (REAL(JI+IORX-1 - IIWEND_ll)+ 0.5)**2
+      ZXWPOS = (REAL(JI+IORX-1 - IIWEND_ll)+ 0.5)**2
       DO JJ=IJSENDINT,IJNENDINT
        !
         ZPOS = MIN(1.,SQRT(ZXUPOS*ZXDEPTH))
@@ -727,9 +729,9 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) &
     ! intersection limits : IIENDINT,IIEINT along x and IJSENDINT,IJNENDINT along y
 !
     DO JI=IIEENDINT,IIEINT
-      ZXUPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)     )**2
-      ZXVPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)+ 0.5)**2
-      ZXWPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)+ 0.5)**2
+      ZXUPOS = (REAL(JI+IORX-1 - IIEEND_ll)     )**2
+      ZXVPOS = (REAL(JI+IORX-1 - IIEEND_ll)+ 0.5)**2
+      ZXWPOS = (REAL(JI+IORX-1 - IIEEND_ll)+ 0.5)**2
       DO JJ=IJSENDINT,IJNENDINT
        !
         ZPOS = MIN(1.,SQRT(ZXUPOS*ZXDEPTH))
diff --git a/src/MNH/removal_vortex.f90 b/src/MNH/removal_vortex.f90
index 5fd49d3819c793db198d6e027e65e94c88f1ed71..5d188015a88b1a1a75ee326c4f61293164ee2725 100644
--- a/src/MNH/removal_vortex.f90
+++ b/src/MNH/removal_vortex.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 2001-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2001-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !     ##########################
@@ -68,6 +68,7 @@ END MODULE MODI_REMOVAL_VORTEX
 !!    -------------
 !!      Original              01/12/01
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -226,8 +227,8 @@ IF (NVERB>=5) WRITE(ILUOUT0,'(A)')'localizing the position of the fix given'
 CALL SM_XYHAT(XLATORI,XLONORI,XLATGUESS,XLONGUESS,ZXHAT,ZYHAT)
 II=MAX(MIN(COUNT(XXHAT(:)<ZXHAT),IIU-1),1)
 IJ=MAX(MIN(COUNT(XYHAT(:)<ZYHAT),IJU-1),1)
-ZI=(ZXHAT-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+FLOAT(II)
-ZJ=(ZYHAT-XYHAT(IJ))/(XYHAT(IJ+1)-XYHAT(IJ))+FLOAT(IJ)
+ZI=(ZXHAT-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+REAL(II)
+ZJ=(ZYHAT-XYHAT(IJ))/(XYHAT(IJ+1)-XYHAT(IJ))+REAL(IJ)
 IIMIN = INT(ZI)
 IJMIN = INT(ZJ)
 IF (NVERB>=5) WRITE(ILUOUT0,'(A,I3,A,I3)')' equivalent indexes in the Meso-NH grid: I= ',IIMIN,' J= ',IJMIN
diff --git a/src/MNH/resolved_elecn.f90 b/src/MNH/resolved_elecn.f90
index 534ba4b34400aa6318c9ea8a2481d2e0742b4689..71ceb8c62dcef75d0bafe62c656747b82f5d598b 100644
--- a/src/MNH/resolved_elecn.f90
+++ b/src/MNH/resolved_elecn.f90
@@ -170,7 +170,8 @@ END MODULE MODI_RESOLVED_ELEC_n
 !  P. Wautelet 10/01/2019: use NEWUNIT argument of OPEN
 !  P. Wautelet 22/01/2019: use standard FLUSH statement instead of non standard intrinsics
 !  P. Wautelet 14/03/2019: bugfix: correct management of files
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -953,7 +954,7 @@ IF (LFLASH_GEOM .AND. LLMA) THEN
     TDTLMA%TIME = TDTLMA%TIME - XDTLMA
     WRITE (YNAME,FMT='(3I2.2,A1,3I2.2,A1,I4.4)')                               &
           ABS(TDTCUR%TDATE%YEAR-2000),TDTCUR%TDATE%MONTH,TDTCUR%TDATE%DAY,'_', &
-            INT(TDTLMA%TIME/3600.),INT(FLOAT(MOD(INT(TDTLMA%TIME),3600))/60.), &
+            INT(TDTLMA%TIME/3600.),INT(REAL(MOD(INT(TDTLMA%TIME),3600))/60.),  &
                                       MOD(INT(TDTLMA%TIME),60), '_', INT(XDTLMA)
     TDTLMA%TIME = MOD(TDTLMA%TIME + XDTLMA,86400.)
     CLMA_FILE = CEXP//"_SIMLMA_"//YNAME//".dat"
diff --git a/src/MNH/retrieve2_nest_infon.f90 b/src/MNH/retrieve2_nest_infon.f90
index b974932530682ad0186d3465847a2dbb0b6597e9..f0a138d1ab356feff300e71e446d891269358052 100644
--- a/src/MNH/retrieve2_nest_infon.f90
+++ b/src/MNH/retrieve2_nest_infon.f90
@@ -90,7 +90,9 @@ END MODULE MODI_RETRIEVE2_NEST_INFO_n
 !!      M.Faivre            2014
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!      J.Escobar : 01/06/2016 : Bug in type of ZBUF INTEGER => REAL & use MNHREAL_MPI for r4/R8 compatibility
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -106,7 +108,7 @@ USE MODD_MPIF
 USE MODD_PARAMETERS
 USE MODD_PGDDIM
 USE MODD_PGDGRID
-use modd_precision,    only: MNHREAL_MPI
+use modd_precision,    only: MNHINT_MPI, MNHREAL_MPI
 USE MODD_STRUCTURE_ll, ONLY: ZONE_ll
 USE MODD_VAR_ll,       ONLY: YSPLITTING, NMNH_COMM_WORLD
 !
@@ -345,8 +347,8 @@ ENDIF
     IOR_C(1:1)=0
     IOR_C(2:2)=0
   ENDIF
-  CALL MPI_ALLREDUCE(IOR_C(1:1), KXOR_C_ll, 1,MPI_INTEGER, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
-  CALL MPI_ALLREDUCE(IOR_C(2:2), KYOR_C_ll, 1,MPI_INTEGER, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
+  CALL MPI_ALLREDUCE(IOR_C(1:1), KXOR_C_ll, 1,MNHINT_MPI, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
+  CALL MPI_ALLREDUCE(IOR_C(2:2), KYOR_C_ll, 1,MNHINT_MPI, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
 !
 !*      1.4   modify coordinates
 ! so that XXHAT(JPEXT+1) and XYHAT(JPEXT+1) correspond to the coordinates of the closest father grid points east (resp. north) of XXHAT(JPEXT+1) and XYHAT(JPEXT+1)
@@ -640,8 +642,8 @@ ELSE
   IXSUP1(:)=0
   IYSUP1(:)=0
 ENDIF
-CALL MPI_ALLREDUCE(IXSUP1(1), KXSIZE, 1,MPI_INTEGER, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll)
-CALL MPI_ALLREDUCE(IYSUP1(1), KYSIZE, 1,MPI_INTEGER, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll)
+CALL MPI_ALLREDUCE(IXSUP1(1), KXSIZE, 1,MNHINT_MPI, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll)
+CALL MPI_ALLREDUCE(IYSUP1(1), KYSIZE, 1,MNHINT_MPI, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll)
 IXSUP1(1) = KXSIZE
 IYSUP1(1) = KYSIZE
 !
@@ -651,8 +653,8 @@ KYSIZE=IYSUP1(1)-(KYOR_C_ll+JPHEXT)+1
 !
 ! some more tests
 !
-CALL MPI_ALLREDUCE(IIU-2*JPHEXT, IIUGLB, 1,MPI_INTEGER, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
-CALL MPI_ALLREDUCE(IJU-2*JPHEXT, IJUGLB, 1,MPI_INTEGER, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
+CALL MPI_ALLREDUCE(IIU-2*JPHEXT, IIUGLB, 1,MNHINT_MPI, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
+CALL MPI_ALLREDUCE(IJU-2*JPHEXT, IJUGLB, 1,MNHINT_MPI, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
 IIUGLB = IIUGLB + 2*JPHEXT
 IJUGLB = IJUGLB + 2*JPHEXT
 IF (     KXOR_C_ll<1 .OR. KXOR_C_ll+KXSIZE+2*JPHEXT>IIUGLB      &
@@ -703,13 +705,13 @@ ZPGDYHAT(0)        = 2.* XPGDYHAT(1) - XPGDYHAT(2)
 #if 0
 DO JI=1,NIMAX+2*JPHEXT
   JIBOX=(JI+KDXRATIO-1-JPHEXT)/KDXRATIO + KXOR_C_ll
-  ZCOEF= FLOAT(MOD(JI+KDXRATIO-1-JPHEXT,KDXRATIO))/FLOAT(KDXRATIO)
+  ZCOEF= REAL(MOD(JI+KDXRATIO-1-JPHEXT,KDXRATIO))/REAL(KDXRATIO)
   ZXHAT(JI)=(1.-ZCOEF)*ZPGDXHAT(JIBOX+JPHEXT-1)+ZCOEF*ZPGDXHAT(JIBOX+JPHEXT) ! +1
 END DO
 !
 DO JJ=1,NJMAX+2*JPHEXT
   JJBOX=(JJ+KDYRATIO-1-JPHEXT)/KDYRATIO + KYOR_C_ll
-  ZCOEF= FLOAT(MOD(JJ+KDYRATIO-1-JPHEXT,KDYRATIO))/FLOAT(KDYRATIO)
+  ZCOEF= REAL(MOD(JJ+KDYRATIO-1-JPHEXT,KDYRATIO))/REAL(KDYRATIO)
   ZYHAT(JJ)=(1.-ZCOEF)*ZPGDYHAT(JJBOX+JPHEXT-1)+ZCOEF*ZPGDYHAT(JJBOX+JPHEXT) ! +1
 END DO
 !
diff --git a/src/MNH/rrcolss.f90 b/src/MNH/rrcolss.f90
index ab89cc99e4c9b81ddbfa5ab1e7c92a0108811471..527165111ecf4d225ce5ec0117c09846d2116b9e 100644
--- a/src/MNH/rrcolss.f90
+++ b/src/MNH/rrcolss.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 init 2006/11/23 10:39:56
-!-----------------------------------------------------------------
 !     ###################
       MODULE MODI_RRCOLSS
 !     ###################
@@ -121,7 +116,8 @@ END INTERFACE
 !!    -------------
 !!      Original    8/11/95
 !!
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !
@@ -221,8 +217,8 @@ ZCST1 = (3.0/XPI)/XRHOLW
 !
 !*       1.1     Compute the growth rate of the slope factors LAMBDA
 !
-ZDLBDAS = EXP( LOG(PLBDASMAX/PLBDASMIN)/FLOAT(SIZE(PRRCOLSS(:,:),1)-1) )
-ZDLBDAR = EXP( LOG(PLBDARMAX/PLBDARMIN)/FLOAT(SIZE(PRRCOLSS(:,:),2)-1) )
+ZDLBDAS = EXP( LOG(PLBDASMAX/PLBDASMIN)/REAL(SIZE(PRRCOLSS(:,:),1)-1) )
+ZDLBDAR = EXP( LOG(PLBDARMAX/PLBDARMIN)/REAL(SIZE(PRRCOLSS(:,:),2)-1) )
 !
 !*       1.2     Scan the slope factors LAMBDAX and LAMBDAZ
 !
@@ -231,7 +227,7 @@ DO JLBDAS = 1,SIZE(PRRCOLSS(:,:),1)
 !
 !*       1.3     Compute the diameter steps
 !
-  ZDDS   = PDINFTY / (FLOAT(KND) * ZLBDAS)
+  ZDDS   = PDINFTY / (REAL(KND) * ZLBDAS)
   DO JLBDAR = 1,SIZE(PRRCOLSS(:,:),2)
     ZLBDAR = PLBDARMIN * ZDLBDAR ** (JLBDAR-1)
 !
@@ -242,16 +238,16 @@ DO JLBDAS = 1,SIZE(PRRCOLSS(:,:),1)
 !
 !*       1.5     Compute the diameter steps
 !
-    ZDDSCALR = PDINFTY / (FLOAT(KND) * ZLBDAR)
+    ZDDSCALR = PDINFTY / (REAL(KND) * ZLBDAR)
 !
 !*       1.6     Scan over the diameters DS and DR
 !
     DO JDS = 1,KND-1
-      ZDS = ZDDS * FLOAT(JDS)
+      ZDS = ZDDS * REAL(JDS)
       ZSCALR = 0.0
       ZCOLLR = 0.0
       DO JDR = 1,KND-1
-        ZDR = ZDDSCALR * FLOAT(JDR)
+        ZDR = ZDDSCALR * REAL(JDR)
 !
 !*       1.7     Compute the normalization factor by integration over the
 !                dimensional spectrum of rain   
@@ -273,13 +269,13 @@ DO JLBDAS = 1,SIZE(PRRCOLSS(:,:),1)
             ! corresponding to a maximal density of the aggregates of XRHOLW
         IF( ZDRMAX >= 0.5*ZDDSCALR ) THEN
           INR = CEILING( ZDRMAX/ZDDSCALR )
-          ZDDCOLLR = ZDRMAX / FLOAT(INR)
+          ZDDCOLLR = ZDRMAX / REAL(INR)
           IF (INR>=KND ) THEN
             INR = KND
             ZDDCOLLR = ZDDSCALR
           END IF
           DO JDR = 1,INR-1
-            ZDR = ZDDCOLLR * FLOAT(JDR)
+            ZDR = ZDDCOLLR * REAL(JDR)
             ZCOLLR = ZCOLLR + (ZDS+ZDR)**2 * ZDR**PEXMASSR                     &
                        * PESR * ABS(PFALLS*ZDS**PEXFALLS-PFALLR*ZDR**PEXFALLR) &
                                       * GENERAL_GAMMA(PALPHAR,PNUR,ZLBDAR,ZDR)
diff --git a/src/MNH/rscolrg.f90 b/src/MNH/rscolrg.f90
index 72d3c86572092729b5572cb31ebd331f89911e44..caa868e91d39cbe12010bfa2c265ffe35304dba4 100644
--- a/src/MNH/rscolrg.f90
+++ b/src/MNH/rscolrg.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 init 2006/11/23 10:43:02
-!-----------------------------------------------------------------
 !     ###################
       MODULE MODI_RSCOLRG
 !     ###################
@@ -121,7 +116,8 @@ END INTERFACE
 !!    -------------
 !!      Original    8/11/95
 !!
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !
@@ -218,8 +214,8 @@ ZCST1  = (3.0/XPI)/XRHOLW
 !
 !*       1.1     Compute the growth rate of the slope factors LAMBDA
 !
-ZDLBDAR = EXP( LOG(PLBDARMAX/PLBDARMIN)/FLOAT(SIZE(PRSCOLRG(:,:),1)-1) )
-ZDLBDAS = EXP( LOG(PLBDASMAX/PLBDASMIN)/FLOAT(SIZE(PRSCOLRG(:,:),2)-1) )
+ZDLBDAR = EXP( LOG(PLBDARMAX/PLBDARMIN)/REAL(SIZE(PRSCOLRG(:,:),1)-1) )
+ZDLBDAS = EXP( LOG(PLBDASMAX/PLBDASMIN)/REAL(SIZE(PRSCOLRG(:,:),2)-1) )
 !
 !*       1.2     Scan the slope factors LAMBDAX and LAMBDAZ
 !
@@ -229,7 +225,7 @@ DO JLBDAR = 1,SIZE(PRSCOLRG(:,:),1)
 !
 !*       1.3     Compute the diameter steps
 !
-  ZDDSCALR = PDINFTY / (FLOAT(KND) * ZLBDAR)
+  ZDDSCALR = PDINFTY / (REAL(KND) * ZLBDAR)
   DO JLBDAS = 1,SIZE(PRSCOLRG(:,:),2)
     ZLBDAS = PLBDASMIN * ZDLBDAS ** (JLBDAS-1)
 !
@@ -240,16 +236,16 @@ DO JLBDAR = 1,SIZE(PRSCOLRG(:,:),1)
 !
 !*       1.5     Compute the diameter steps
 !
-    ZDDS     = PDINFTY / (FLOAT(KND) * ZLBDAS)
+    ZDDS     = PDINFTY / (REAL(KND) * ZLBDAS)
 !
 !*       1.6     Scan over the diameters DS and DR
 !
     DO JDS = 1,KND-1
-      ZDS = ZDDS * FLOAT(JDS)
+      ZDS = ZDDS * REAL(JDS)
       ZSCALR = 0.0
       ZCOLLR = 0.0
       DO JDR = 1,KND-1
-        ZDR = ZDDSCALR * FLOAT(JDR)
+        ZDR = ZDDSCALR * REAL(JDR)
 !
 !*       1.7     Compute the normalization factor by integration over the
 !                dimensional spectrum of rain   
@@ -270,9 +266,9 @@ DO JLBDAR = 1,SIZE(PRSCOLRG(:,:),1)
             ! corresponding to a maximal density of the aggregates of XRHOLW
         IF( (ZDRMAX-ZDRMIN) >= 0.5*ZDDSCALR ) THEN
           INR = CEILING( (ZDRMAX-ZDRMIN)/ZDDSCALR )
-          ZDDCOLLR = (ZDRMAX-ZDRMIN) / FLOAT(INR)
+          ZDDCOLLR = (ZDRMAX-ZDRMIN) / REAL(INR)
           DO JDR = 1,INR-1
-            ZDR = ZDDCOLLR * FLOAT(JDR) + ZDRMIN
+            ZDR = ZDDCOLLR * REAL(JDR) + ZDRMIN
             ZCOLLR = ZCOLLR + (ZDS+ZDR)**2                                     &
                        * GENERAL_GAMMA(PALPHAR,PNUR,ZLBDAR,ZDR)                &
                          * PESR * ABS(PFALLS*ZDS**PEXFALLS-PFALLR*ZDR**PEXFALLR)
diff --git a/src/MNH/rzcolx.f90 b/src/MNH/rzcolx.f90
index e552f6cc86385ebc1ae0c87ab8d32e02f149ed4d..28658241cf1021a29de694cd5a99b85e9c3340d9 100644
--- a/src/MNH/rzcolx.f90
+++ b/src/MNH/rzcolx.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 init 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     ##################
       MODULE MODI_RZCOLX
 !     ##################
@@ -125,7 +120,8 @@ END INTERFACE
 !!    -------------
 !!      Original    8/11/95
 !!
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !
@@ -210,8 +206,8 @@ REAL    :: ZFUNC   ! Ancillary function
 !
 !*       1.1     Compute the growth rate of the slope factors LAMBDA
 !
-ZDLBDAX = EXP( LOG(PLBDAXMAX/PLBDAXMIN)/FLOAT(SIZE(PRZCOLX(:,:),1)-1) )
-ZDLBDAZ = EXP( LOG(PLBDAZMAX/PLBDAZMIN)/FLOAT(SIZE(PRZCOLX(:,:),2)-1) )
+ZDLBDAX = EXP( LOG(PLBDAXMAX/PLBDAXMIN)/REAL(SIZE(PRZCOLX(:,:),1)-1) )
+ZDLBDAZ = EXP( LOG(PLBDAZMAX/PLBDAZMIN)/REAL(SIZE(PRZCOLX(:,:),2)-1) )
 !
 !*       1.2     Scan the slope factors LAMBDAX and LAMBDAZ
 !
@@ -227,18 +223,18 @@ DO JLBDAX = 1,SIZE(PRZCOLX(:,:),1)
 !
 !*       1.4     Compute the diameter steps
 !
-    ZDDX = PDINFTY / (FLOAT(KND) * ZLBDAX)
-    ZDDZ = PDINFTY / (FLOAT(KND) * ZLBDAZ)
+    ZDDX = PDINFTY / (REAL(KND) * ZLBDAX)
+    ZDDZ = PDINFTY / (REAL(KND) * ZLBDAZ)
 !
 !*       1.5     Scan over the diameters DX and DZ
 !
     DO JDX = 1,KND-1
-      ZDX = ZDDX * FLOAT(JDX)
+      ZDX = ZDDX * REAL(JDX)
 !
       ZSCALZ = 0.0
       ZCOLLZ = 0.0
       DO JDZ = 1,KND-1
-        ZDZ = ZDDZ * FLOAT(JDZ)
+        ZDZ = ZDDZ * REAL(JDZ)
 !
 !*       1.6     Compute the normalization factor by integration over the
 !                dimensional spectrum of specy Z  
diff --git a/src/MNH/sedim_blowsnow.f90 b/src/MNH/sedim_blowsnow.f90
index 80edcfdb2309ebf845bc8db4e37f343939f59b40..521bf2059b3c39469bbdebb50e5eae9ddd06f7e7 100644
--- a/src/MNH/sedim_blowsnow.f90
+++ b/src/MNH/sedim_blowsnow.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2018-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !   ##############################
@@ -58,8 +58,7 @@ END MODULE MODI_SEDIM_BLOWSNOW
 !!    -------------
 !!   Original
 !!
-!!
-!!   IMPLICIT ARGUMENTS
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !
 USE MODD_BLOWSNOW
 USE MODD_CSTS_BLOWSNOW
@@ -150,11 +149,11 @@ ZHMIN=MINVAL(ZH(:,:,1:ILU))
 ZVSMAX = 2.      
 ISPLITA = 1
 SPLIT : DO
-  ZT = PDTMONITOR / FLOAT(ISPLITA)
+  ZT = PDTMONITOR / REAL(ISPLITA)
   IF ( ZT * ZVSMAX / ZHMIN .LT. 1.) EXIT SPLIT
   ISPLITA = ISPLITA + 1
 END DO SPLIT
-ZTSPLITR  = PDTMONITOR / FLOAT(ISPLITA)
+ZTSPLITR  = PDTMONITOR / REAL(ISPLITA)
 
 ZFLUXSED(:,:,:,:) = 0.
 ZFLUXMAX(:,:,:,:) = 0.
diff --git a/src/MNH/sedim_dust.f90 b/src/MNH/sedim_dust.f90
index f2941c27de9a648e8e26c3f5258b921e4749c3b0..145939e1f3a17796398f5ddc29ccfcd0ffc95fdd 100644
--- a/src/MNH/sedim_dust.f90
+++ b/src/MNH/sedim_dust.f90
@@ -1,12 +1,8 @@
-!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!ORILAM_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
 !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !ORILAM_LIC for details.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$ $Date$
-!-----------------------------------------------------------------
 !!   ##############################
      MODULE MODI_SEDIM_DUST
 !!   ##############################
@@ -55,7 +51,8 @@ END MODULE MODI_SEDIM_DUST
 !!   MODIFICATIONS
 !!    -------------
 !!   Original
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 ! Entry variables:
 !
 ! PSVTS(INOUT)       -Array of moments included in PSVTS
@@ -193,7 +190,7 @@ DO JN=1,NMODE_DST*3
   ISPLITA = INT(ZVSMAX*PDTMONITOR/ZHMIN)+1
   ISPLITA = MIN(20, ISPLITA)
   !
-  ZTSPLITR  = PDTMONITOR / FLOAT(ISPLITA)   
+  ZTSPLITR  = PDTMONITOR / REAL(ISPLITA)
   !
   ZFLUXSED(:,:,ILU+1,JN) = 0.
   
diff --git a/src/MNH/sedim_salt.f90 b/src/MNH/sedim_salt.f90
index 961b4822b5be083a309c5c708b9fc8487d614046..43e407a88308b2ce2a49928bb14d1cbd0aba0875 100644
--- a/src/MNH/sedim_salt.f90
+++ b/src/MNH/sedim_salt.f90
@@ -1,12 +1,8 @@
-!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!ORILAM_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
 !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !ORILAM_LIC for details.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$ $Date$
-!-----------------------------------------------------------------
 !!   ##############################
      MODULE MODI_SEDIM_SALT
 !!   ##############################
@@ -56,6 +52,8 @@ END MODULE MODI_SEDIM_SALT
 !!    -------------
 !!   Original
 !!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 ! Entry variables:
 !
 ! PSVTS(INOUT)       -Array of moments included in PSVTS
@@ -192,7 +190,7 @@ DO JN=1,NMODE_SLT*3
   ISPLITA = INT(ZVSMAX*PDTMONITOR/ZHMIN)+1
   ISPLITA = MIN(20, ISPLITA)
   !
-  ZTSPLITR  = PDTMONITOR / FLOAT(ISPLITA)   
+  ZTSPLITR  = PDTMONITOR / REAL(ISPLITA)
   !
   ZFLUXSED(:,:,ILU+1,JN) = 0.
   
diff --git a/src/MNH/series_cloud_elec.f90 b/src/MNH/series_cloud_elec.f90
index 6bd26c192d27311fc15960e005344dce7e9e7c62..48f463e9955a65a5758880341fc0f8cc06977d14 100644
--- a/src/MNH/series_cloud_elec.f90
+++ b/src/MNH/series_cloud_elec.f90
@@ -81,7 +81,8 @@ END MODULE MODI_SERIES_CLOUD_ELEC
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !!      Philippe Wautelet: 10/01/2019: use NEWUNIT argument of OPEN
 !!      Philippe Wautelet: 22/01/2019: use standard FLUSH statement instead of non standard intrinsics
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*	0.	DECLARATIONS
@@ -462,7 +463,7 @@ CALL SUM_ELEC_ll(ZICE_MASS)
 CALL SUM_ELEC_ll(ICOUNT)
 !
 IF (ICOUNT .GT. 0) THEN
-  ZIWP = ZIWP + ZICE_MASS / (FLOAT(ICOUNT) * XDXHATM * XDYHATM)
+  ZIWP = ZIWP + ZICE_MASS / (REAL(ICOUNT) * XDXHATM * XDYHATM)
 END IF
 !
 !
@@ -546,25 +547,25 @@ IF (JCOUNT == JCOUNT_STOP) THEN
     ILU = TPFILE_SERIES_CLOUD_ELEC%NLU
     WRITE (ILU, FMT='(I6,19(E12.4))') &
              INT(KTCOUNT*PTSTEP),         & ! time
-             ZCTH_REF/FLOAT(JCOUNT),      & ! cloud top height from Z
-             ZCTH_MR/FLOAT(JCOUNT),       & ! cloud top height from m.r.
-             ZDBZMAX/FLOAT(JCOUNT),       & ! maximum radar reflectivity
-             ZWMAX/FLOAT(JCOUNT),         & ! maximum vertical velocity
-             ZVOL_UP5/FLOAT(JCOUNT),      & ! updraft volume for W > 5 m/s
-             ZVOL_UP10/FLOAT(JCOUNT),     & ! updraft volume for W > 10 m/s
-             ZMASS_C/FLOAT(JCOUNT),       & ! cloud droplets mass
-             ZMASS_R/FLOAT(JCOUNT),       & ! rain mass
-             ZMASS_I/FLOAT(JCOUNT),       & ! ice crystal mass
-             ZMASS_S/FLOAT(JCOUNT),       & ! snow mass
-             ZMASS_G/FLOAT(JCOUNT),       & ! graupel mass
-             ZMASS_ICE_P/FLOAT(JCOUNT),   & ! precipitation ice mass
-             ZFLUX_PROD/FLOAT(JCOUNT),    & ! ice mass flux product
-             ZFLUX_PRECIP/FLOAT(JCOUNT),  & ! precipitation ice mass flux
-             ZFLUX_NPRECIP/FLOAT(JCOUNT), & ! non-precipitation ice mass flux
-             ZIWP/FLOAT(JCOUNT),          & ! ice water path
-             ZCLD_VOL/FLOAT(JCOUNT),      & ! cloud volume
-             ZINPRR/FLOAT(JCOUNT),        & ! Rain instant precip
-             ZMAX_INPRR/FLOAT(JCOUNT)       ! maximum rain instant. precip.
+             ZCTH_REF/REAL(JCOUNT),      & ! cloud top height from Z
+             ZCTH_MR/REAL(JCOUNT),       & ! cloud top height from m.r.
+             ZDBZMAX/REAL(JCOUNT),       & ! maximum radar reflectivity
+             ZWMAX/REAL(JCOUNT),         & ! maximum vertical velocity
+             ZVOL_UP5/REAL(JCOUNT),      & ! updraft volume for W > 5 m/s
+             ZVOL_UP10/REAL(JCOUNT),     & ! updraft volume for W > 10 m/s
+             ZMASS_C/REAL(JCOUNT),       & ! cloud droplets mass
+             ZMASS_R/REAL(JCOUNT),       & ! rain mass
+             ZMASS_I/REAL(JCOUNT),       & ! ice crystal mass
+             ZMASS_S/REAL(JCOUNT),       & ! snow mass
+             ZMASS_G/REAL(JCOUNT),       & ! graupel mass
+             ZMASS_ICE_P/REAL(JCOUNT),   & ! precipitation ice mass
+             ZFLUX_PROD/REAL(JCOUNT),    & ! ice mass flux product
+             ZFLUX_PRECIP/REAL(JCOUNT),  & ! precipitation ice mass flux
+             ZFLUX_NPRECIP/REAL(JCOUNT), & ! non-precipitation ice mass flux
+             ZIWP/REAL(JCOUNT),          & ! ice water path
+             ZCLD_VOL/REAL(JCOUNT),      & ! cloud volume
+             ZINPRR/REAL(JCOUNT),        & ! Rain instant precip
+             ZMAX_INPRR/REAL(JCOUNT)       ! maximum rain instant. precip.
     FLUSH(UNIT=ILU)
   END IF
 !
diff --git a/src/MNH/set_bogus_vortex.f90 b/src/MNH/set_bogus_vortex.f90
index 4cc56703d6fb758eb51589cb2af19b4cf6197424..5f22d60d909fb9459dacea44fab9f59f7a3cce78 100644
--- a/src/MNH/set_bogus_vortex.f90
+++ b/src/MNH/set_bogus_vortex.f90
@@ -67,7 +67,8 @@ END MODULE MODI_SET_BOGUS_VORTEX
 !!                                          and use modd_hurr_param for Holland's parameters
 !!                     20/02/08 (D.Barbary) Change condition of ZRADBOGMAX
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -179,8 +180,8 @@ IF (NVERB>=5) WRITE(ILUOUT0,'(A)')'Localizing the position of the bogus vortex'
 CALL SM_XYHAT(XLATORI,XLONORI,XLATBOG,XLONBOG,ZXHAT,ZYHAT)
 II=MAX(MIN(COUNT(XXHAT(:)<ZXHAT),IIU-1),1)
 IJ=MAX(MIN(COUNT(XYHAT(:)<ZYHAT),IJU-1),1)
-ZI=(ZXHAT-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+FLOAT(II)
-ZJ=(ZYHAT-XYHAT(IJ))/(XYHAT(IJ+1)-XYHAT(IJ))+FLOAT(IJ)
+ZI=(ZXHAT-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+REAL(II)
+ZJ=(ZYHAT-XYHAT(IJ))/(XYHAT(IJ+1)-XYHAT(IJ))+REAL(IJ)
 IIBOG = INT(ZI)
 IJBOG = INT(ZJ)
 IF (NVERB>=5) WRITE(ILUOUT0,'(A,I3,A,I3)')' equivalent indexes in the Meso-NH grid: I= ',IIBOG,' J= ',IJBOG
diff --git a/src/MNH/set_geosbal.f90 b/src/MNH/set_geosbal.f90
index 10287c546607fc73c1514b27bea0e810ece3f539..ac57ba40c6f88f310f314a0812194805aa23f73e 100644
--- a/src/MNH/set_geosbal.f90
+++ b/src/MNH/set_geosbal.f90
@@ -244,6 +244,7 @@ END MODULE MODI_SET_GEOSBAL
 !!    crée à partir de l'ancienne routine set_mass.f90 en prenant la partie
 !!    concernant la balance geostrophique uniquement
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -430,7 +431,7 @@ ZTHV3D(:,:,:) = SPREAD(SPREAD(PTHVM(:),1,IIU),2,IJU)  ! initialize  with
 !  compute the anelastic reference state when the geostrophic equilibrium is
 !  taken into account
       XTHVREFZ(:)= SUM2D_ll(ZTHV3D,1,2,IINFO_ll,1,1,1,IIU_ll,IJU_ll,IKU) &
-                                  /FLOAT(IIU_ll*IJU_ll)
+                                  /REAL(IIU_ll*IJU_ll)
     END IF
 !
 !*       3.1 Integration from I=ILOC to I=IIU
diff --git a/src/MNH/set_mass.f90 b/src/MNH/set_mass.f90
index e66add53264a14cdb3864464cddbbe3fb2d041a9..b886c5c22694297077bd0e1201dbdfd9ed99f8cd 100644
--- a/src/MNH/set_mass.f90
+++ b/src/MNH/set_mass.f90
@@ -118,7 +118,8 @@ SUBROUTINE SET_MASS(TPFILE,OPROFILE_IN_PROC, PZFLUX_PROFILE,
 !!    M.Moge      08/2015   add UPDATE_HALO_ll on XTHT, ZTHV3D, XRT(:,:,1,:) after computation
 !!    J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!    
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !!
 ! use des modules
@@ -284,7 +285,7 @@ ZPMASS_MX(:,:,:)=XP00*(ZHEXNMASS_MX(:,:,:))**(XCPD/XRD)
 ZRHOD_MX(:,:,:)=ZPMASS_MX(:,:,:)/(ZPMASS_MX(:,:,:)/XP00)**(XRD/XCPD) &
                  /(XRD*ZTHV3D_MX(:,:,:)*(1.+WATER_SUM(ZMR3D_MX(:,:,:,:))))
 
-XEXNTOP=SUM_DD_R2_ll(ZHEXNFLUX_MX(IIB:IIE,IJB:IJE,IKE+1))/FLOAT(NIMAX_ll*NJMAX_ll)
+XEXNTOP=SUM_DD_R2_ll(ZHEXNFLUX_MX(IIB:IIE,IJB:IJE,IKE+1))/REAL(NIMAX_ll*NJMAX_ll)
 
 
 !------------------------------
@@ -521,7 +522,7 @@ ELSE
   CALL COMPUTE_EXNER_FROM_GROUND(ZTHVREF3D,PZFLUX_MX,&
           ZEXNSURF2D_MX,ZHEXNFLUX,ZHEXNMASS)
 
-  XEXNTOP=SUM_DD_R2_ll(ZHEXNFLUX(IIB:IIE,IJB:IJE,IKE+1))/FLOAT(NIMAX_ll*NJMAX_ll)
+  XEXNTOP=SUM_DD_R2_ll(ZHEXNFLUX(IIB:IIE,IJB:IJE,IKE+1))/REAL(NIMAX_ll*NJMAX_ll)
 
   ZEXNTOP2D=ZHEXNFLUX(:,:,IKE+1)
   CALL COMPUTE_EXNER_FROM_TOP(ZTHVREF3D,XZZ,ZEXNTOP2D,ZHEXNFLUX,ZHEXNMASS)
diff --git a/src/MNH/set_perturb.f90 b/src/MNH/set_perturb.f90
index 40906e759cfeef7c91e6800571c7435286ff96ce..ef30e87c56598b307c37c5061a9eff04d0071f3e 100644
--- a/src/MNH/set_perturb.f90
+++ b/src/MNH/set_perturb.f90
@@ -97,7 +97,8 @@ END MODULE MODI_SET_PERTURB
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!      C.Lac, V.Masson       1/2018 : White noise in the LBC
 !!      Q.Rodier              10/2018 : move allocate(ZWHITE) for NKWH>2
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -432,7 +433,7 @@ SELECT CASE(CPERT_KIND)
     END DO
     DEALLOCATE(ZCX_ll,ZSX_ll,ZCY_ll,ZSY_ll)
 !
-    ZVAR= SUM_DD_R2_ll( (ZWHITE(IIB:IIE,IJB:IJE))**2 )/FLOAT(NIMAX_ll*NJMAX_ll)
+    ZVAR= SUM_DD_R2_ll( (ZWHITE(IIB:IIE,IJB:IJE))**2 )/REAL(NIMAX_ll*NJMAX_ll)
     CALL MPPDB_CHECK2D(ZWHITE,"SET_PERTURB::ZWHITE",PRECISION)
     ZWHITE(:,:) = ZWHITE(:,:)/SQRT(ZVAR)
 !
@@ -537,9 +538,9 @@ SELECT CASE(CPERT_KIND)
 !
   CASE('SH')  !    Shock (Burger's Equation)
 !
-    ZOMEGA = 2.0*XPI/FLOAT(IIE-IIB)
+    ZOMEGA = 2.0*XPI/REAL(IIE-IIB)
     DO JI = IIB, IIE
-      XUT(JI,:,:) = XUT(JI,:,:) + XAMPLIUV*SIN( ZOMEGA*FLOAT(JI-IIB) )
+      XUT(JI,:,:) = XUT(JI,:,:) + XAMPLIUV*SIN( ZOMEGA*REAL(JI-IIB) )
     END DO
     XVT(:,:,:) = 0.0
     XWT(:,:,:) = 0.0
diff --git a/src/MNH/slow_terms.f90 b/src/MNH/slow_terms.f90
index b8a314e36b1ee4605c85886e42f6a745ec4a591f..3699b5af85b71d9d9c82ee26263c61e84a62f8c7 100644
--- a/src/MNH/slow_terms.f90
+++ b/src/MNH/slow_terms.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-!-----------------------------------------------------------------
 !     ######################
       MODULE MODI_SLOW_TERMS
 !     ###################### 
@@ -154,6 +150,7 @@ END MODULE MODI_SLOW_TERMS
 !!                     14/09/97 (V. Masson) removes low rr non-physical values
 !!                     06/11/02 (V. Masson) update the budget calls
 !!     J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -238,7 +235,7 @@ END DO
 !
 !*       2.1    time splitting loop initialization        
 !
-ZTSPLITR = PTSTEP / FLOAT(KSPLITR)       ! Small time step
+ZTSPLITR = PTSTEP / REAL(KSPLITR)       ! Small time step
 ! 
 ZW1(:,:,:) = PRRS(:,:,:) * PTSTEP
 ZW2(:,:,:) = 0.
diff --git a/src/MNH/spawn_grid2.f90 b/src/MNH/spawn_grid2.f90
index 1a6e192263046c9860869d72f42ab84a1b25791c..15de26857beed2dd1fa0d811b2c82330722ecdd1 100644
--- a/src/MNH/spawn_grid2.f90
+++ b/src/MNH/spawn_grid2.f90
@@ -148,6 +148,7 @@ END MODULE MODI_SPAWN_GRID2
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!      J.Escobar 05/03/2018 : bypass gridnesting special case KD(X/Y)RATIO == 1 not parallelized
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -359,7 +360,7 @@ PLEN2    = XLEN21
   !on the west halo of the son model
   DO JI = 1,JPHEXT
     DO JEPSX=1,KDXRATIO
-      ZPOND2 = FLOAT(KDXRATIO-JEPSX)/FLOAT(KDXRATIO)
+      ZPOND2 = REAL(KDXRATIO-JEPSX)/REAL(KDXRATIO)
       ZPOND1 = 1.-ZPOND2
       IF( JPHEXT+1-(JI-1)*KDXRATIO-JEPSX > 0 ) THEN
         PXHAT(JPHEXT+1-(JI-1)*KDXRATIO-JEPSX) = ZPOND1*ZXHAT_EXTENDED_C(JPHEXT+1-JI+1) &
@@ -370,7 +371,7 @@ PLEN2    = XLEN21
   !on the physical domain of the son model
   DO JI = 1,IDIMX_C-2*(JPHEXT+1)  !the physical size of the son model in the father grid
     DO JEPSX = 1,KDXRATIO
-      ZPOND2 = FLOAT(JEPSX-1)/FLOAT(KDXRATIO)
+      ZPOND2 = REAL(JEPSX-1)/REAL(KDXRATIO)
       ZPOND1 = 1.-ZPOND2
       PXHAT(JPHEXT+JEPSX+(JI-1)*KDXRATIO) = ZPOND1*ZXHAT_EXTENDED_C(JI+IIB_C) & 
             + ZPOND2*ZXHAT_EXTENDED_C(JI+IIB_C+1)
@@ -379,7 +380,7 @@ PLEN2    = XLEN21
   !on the east halo of the son model
   DO JI = 1,JPHEXT
     DO JEPSX=1,KDXRATIO
-      ZPOND1 = FLOAT(KDXRATIO-JEPSX+1)/FLOAT(KDXRATIO)
+      ZPOND1 = REAL(KDXRATIO-JEPSX+1)/REAL(KDXRATIO)
       ZPOND2 = 1.-ZPOND1
       IF( SIZE(PXHAT)-JPHEXT+(JI-1)*KDXRATIO+JEPSX <= SIZE(PXHAT) ) THEN
         PXHAT(SIZE(PXHAT)-JPHEXT+(JI-1)*KDXRATIO+JEPSX) = ZPOND1*ZXHAT_EXTENDED_C(IDIMX_C-JPHEXT+JI-1) &
@@ -417,7 +418,7 @@ PLEN2    = XLEN21
   !on the south halo of the son model
   DO JJ = 1,JPHEXT
     DO JEPSY=1,KDYRATIO
-      ZPOND2 = FLOAT(KDXRATIO-JEPSY)/FLOAT(KDYRATIO)
+      ZPOND2 = REAL(KDXRATIO-JEPSY)/REAL(KDYRATIO)
       ZPOND1 = 1.-ZPOND2
       IF( JPHEXT+1-(JJ-1)*KDYRATIO-JEPSY > 0 ) THEN
         PYHAT(JPHEXT+1-(JJ-1)*KDYRATIO-JEPSY) = ZPOND1*ZYHAT_EXTENDED_C(JPHEXT+1-JJ+1) &
@@ -428,7 +429,7 @@ PLEN2    = XLEN21
   !on the physical domain of the son model
   DO JJ = 1,IDIMY_C-2*(JPHEXT+1)  !the physical size of the son model in the father grid
     DO JEPSY = 1,KDYRATIO
-      ZPOND2 = FLOAT(JEPSY-1)/FLOAT(KDYRATIO)
+      ZPOND2 = REAL(JEPSY-1)/REAL(KDYRATIO)
       ZPOND1 = 1.-ZPOND2
       PYHAT(JPHEXT+JEPSY+(JJ-1)*KDYRATIO) = ZPOND1*ZYHAT_EXTENDED_C(JJ+JPHEXT+1) &
             + ZPOND2*ZYHAT_EXTENDED_C(JJ+JPHEXT+1+1)
@@ -437,7 +438,7 @@ PLEN2    = XLEN21
   !on the north halo of the son model
   DO JJ = 1,JPHEXT
     DO JEPSY=1,KDYRATIO
-      ZPOND1 = FLOAT(KDYRATIO-JEPSY+1)/FLOAT(KDYRATIO)
+      ZPOND1 = REAL(KDYRATIO-JEPSY+1)/REAL(KDYRATIO)
       ZPOND2 = 1.-ZPOND1
       IF( SIZE(PYHAT)-JPHEXT+(JJ-1)*KDYRATIO+JEPSY <= SIZE(PYHAT) ) THEN
         PYHAT(SIZE(PYHAT)-JPHEXT+(JJ-1)*KDYRATIO+JEPSY) = ZPOND1*ZYHAT_EXTENDED_C(IDIMY_C-JPHEXT+JJ-1) &
@@ -454,7 +455,7 @@ PLEN2    = XLEN21
 !!$  ZXHAT_EXTENDED(1:IXSIZE1)=XXHAT1(:)
 !!$  ZXHAT_EXTENDED(IXSIZE1+1)=2.*XXHAT1(IXSIZE1)-XXHAT1(IXSIZE1-1)
 !!$  DO JEPSX = 1,KDXRATIO
-!!$    ZPOND2 = FLOAT(JEPSX-1)/FLOAT(KDXRATIO)
+!!$    ZPOND2 = REAL(JEPSX-1)/REAL(KDXRATIO)
 !!$    ZPOND1 = 1.-ZPOND2
 !!$    DO JI = KXOR,KXEND
 !!$      IIS = IIB+JEPSX-1+(JI-KXOR-JPHEXT)*KDXRATIO
@@ -470,7 +471,7 @@ PLEN2    = XLEN21
 !!$  ZYHAT_EXTENDED(1:IYSIZE1)=XYHAT1(:)
 !!$  ZYHAT_EXTENDED(IYSIZE1+1)=2.*XYHAT1(IYSIZE1)-XYHAT1(IYSIZE1-1)
 !!$  DO JEPSY = 1,KDYRATIO
-!!$    ZPOND2 = FLOAT(JEPSY-1)/FLOAT(KDYRATIO)
+!!$    ZPOND2 = REAL(JEPSY-1)/REAL(KDYRATIO)
 !!$    ZPOND1 = 1.-ZPOND2
 !!$    DO JJ = KYOR,KYEND
 !!$      IJS = IJB+JEPSY-1+(JJ-KYOR-JPHEXT)*KDYRATIO
diff --git a/src/MNH/sum_on_all_procs_mnh.f90 b/src/MNH/sum_on_all_procs_mnh.f90
index d4a56c1ea0015fd0c5f22b975d0fe304c7aa8a4d..2f053f3446da53230e5e89fd260c68a0f5a0a68d 100644
--- a/src/MNH/sum_on_all_procs_mnh.f90
+++ b/src/MNH/sum_on_all_procs_mnh.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2011-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     #########
       SUBROUTINE SUM_ON_ALL_PROCS_MNH(KSIZE,KIN,KOUT)
 !     #######################################################
@@ -33,6 +34,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    07/2011 
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -72,7 +74,7 @@ ZIN = 0.
 DO JJ=1,NJMAX
   DO JI=1,NIMAX
     IINDEX = JI + NHALO + (JJ-1+NHALO) * (NIMAX+2*NHALO)
-    ZIN = ZIN + FLOAT(KIN(IINDEX))
+    ZIN = ZIN + REAL(KIN(IINDEX))
   END DO
 END DO
 !
diff --git a/src/MNH/sum_on_all_procs_mnh_hal.f90 b/src/MNH/sum_on_all_procs_mnh_hal.f90
index 982081140a0954fc85c36382fb3f17779375e27b..6e85cd6b5d96411a2c70c42b0be9d9431783f835 100644
--- a/src/MNH/sum_on_all_procs_mnh_hal.f90
+++ b/src/MNH/sum_on_all_procs_mnh_hal.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2011-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     #########
       SUBROUTINE SUM_ON_ALL_PROCS_MNH_HAL(KSIZE,KIN,KOUT)
 !     #######################################################
@@ -33,6 +34,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    07/2011 
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -72,7 +74,7 @@ ZIN = 0.
 DO JJ=1,NJMAX+2*NHALO
   DO JI=1,NIMAX+2*NHALO
     IINDEX = JI + (JJ-1) * (NIMAX+2*NHALO)
-    ZIN = ZIN + FLOAT(KIN(IINDEX))
+    ZIN = ZIN + REAL(KIN(IINDEX))
   END DO
 END DO
 !
diff --git a/src/MNH/ver_interp_to_mixed_grid.f90 b/src/MNH/ver_interp_to_mixed_grid.f90
index dd63ee4930a93e915281f554d08de0426983dcd1..1b2d4d6a0fb5905bb397b94dfcec75e811a99c00 100644
--- a/src/MNH/ver_interp_to_mixed_grid.f90
+++ b/src/MNH/ver_interp_to_mixed_grid.f90
@@ -161,6 +161,7 @@ END MODULE MODI_VER_INTERP_TO_MIXED_GRID
 !!                  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 22/02/2019: replace Hollerith edit descriptor (deleted from Fortran 95 standard)
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -408,12 +409,12 @@ IF (HFILE=='ATM ') THEN
 !*       4.    COMPUTATION OF THE REFERENCE STATE TOP EXNER FUNCTION
 !              -----------------------------------------------------
 !
-!!$  XEXNTOP=SUM(ZHEXNFLUX_MX(IIB:IIE,IJB:IJE,IKE+1))/FLOAT((IIE-IIB+1)*(IJE-IJB+1))
+!!$  XEXNTOP=SUM(ZHEXNFLUX_MX(IIB:IIE,IJB:IJE,IKE+1))/REAL((IIE-IIB+1)*(IJE-IJB+1))
 !JUAN REALZ
 !!!  XEXNTOP  = SUM(ZHEXNFLUX_MX(IIB:IIE,IJB:IJE,IKE+1))
 !20131028 in Mymodif --> 20131129 in MNHorig
 XEXNTOP=SUM_DD_R2_ll(ZHEXNFLUX_MX(IIB:IIE,IJB:IJE,IKE+1))
-ZCOUNT   = FLOAT((IIE-IIB+1)*(IJE-IJB+1))
+ZCOUNT   = REAL((IIE-IIB+1)*(IJE-IJB+1))
 !$20140227 disable reduce no xexntop !!
 !$ CALL REDUCESUM_ll(XEXNTOP,IINFO_ll)
   CALL REDUCESUM_ll(ZCOUNT,IINFO_ll)
diff --git a/src/MNH/vqzcolx.f90 b/src/MNH/vqzcolx.f90
index 246698aa65548956993a7c1e8c0b1592e6c87fd0..dc5c3e759c92e69a5c759c7df9c725eade80d720 100644
--- a/src/MNH/vqzcolx.f90
+++ b/src/MNH/vqzcolx.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for SCCS information
-!-----------------------------------------------------------------
-!      %Z% Lib:%F%, Version:%I%, Date:%D%, Last modified:%E%
-!-----------------------------------------------------------------
 !     	###################
         MODULE MODI_VQZCOLX
 !     	###################
@@ -122,7 +118,8 @@ END MODULE MODI_VQZCOLX
 !!    -------------
 !!      Original    8/11/95
 !!
-!!
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+!
 !-------------------------------------------------------------------------------
 !
 !
@@ -203,8 +200,8 @@ REAL    :: ZFUNC   ! Ancillary function
 !
 !*       1.1     Compute the growth rate of the slope factors LAMBDA
 !
-ZDLBDAX = EXP( LOG(PLBDAXMAX / PLBDAXMIN) / FLOAT(SIZE(PRZCOLX(:,:),1) - 1) )
-ZDLBDAZ = EXP( LOG(PLBDAZMAX / PLBDAZMIN) / FLOAT(SIZE(PRZCOLX(:,:),2) - 1) )
+ZDLBDAX = EXP( LOG(PLBDAXMAX / PLBDAXMIN) / REAL(SIZE(PRZCOLX(:,:),1) - 1) )
+ZDLBDAZ = EXP( LOG(PLBDAZMAX / PLBDAZMIN) / REAL(SIZE(PRZCOLX(:,:),2) - 1) )
 !
 !*       1.2     Scan the slope factors LAMBDAX and LAMBDAZ
 !
@@ -220,18 +217,18 @@ DO JLBDAX = 1, SIZE(PRZCOLX(:,:),1)
 !
 !*       1.4     Compute the diameter steps
 !
-    ZDDX = PDINFTY / (FLOAT(KND) * ZLBDAX)
-    ZDDZ = PDINFTY / (FLOAT(KND) * ZLBDAZ)
+    ZDDX = PDINFTY / (REAL(KND) * ZLBDAX)
+    ZDDZ = PDINFTY / (REAL(KND) * ZLBDAZ)
 !
 !*       1.5     Scan over the diameters DX and DZ
 !
     DO JDX = 1, KND-1
-      ZDX = ZDDX * FLOAT(JDX)
+      ZDX = ZDDX * REAL(JDX)
 !
       ZSCALZ = 0.0
       ZCOLLZ = 0.0
       DO JDZ = 1, KND-1
-        ZDZ = ZDDZ * FLOAT(JDZ)
+        ZDZ = ZDDZ * REAL(JDZ)
 !
 !*       1.6     Compute the normalization factor by integration over the
 !                dimensional spectrum of specy Z  
diff --git a/src/MNH/xy_to_latlon.f90 b/src/MNH/xy_to_latlon.f90
index 49fa91ab68950f5d1e6ab3a900e503b078828fd4..6d3087710bd30150c94a681090cebdd2b1269ceb 100644
--- a/src/MNH/xy_to_latlon.f90
+++ b/src/MNH/xy_to_latlon.f90
@@ -55,6 +55,7 @@
 !!    + changes call to READ_HGRID
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !----------------------------------------------------------------------------
 !
 !*    0.     DECLARATION
@@ -158,8 +159,8 @@ DO
 !
   II=MAX(MIN(INT(ZI),NPGDIMAX+2*JPHEXT-1),1)
   IJ=MAX(MIN(INT(ZJ),NPGDJMAX+2*JPHEXT-1),1)
-  ZXHAT=XPGDXHAT(II) + (ZI-FLOAT(II)) * ( XPGDXHAT(II+1) - XPGDXHAT(II) )
-  ZYHAT=XPGDYHAT(IJ) + (ZJ-FLOAT(IJ)) * ( XPGDYHAT(IJ+1) - XPGDYHAT(IJ) )
+  ZXHAT=XPGDXHAT(II) + (ZI-REAL(II)) * ( XPGDXHAT(II+1) - XPGDXHAT(II) )
+  ZYHAT=XPGDYHAT(IJ) + (ZJ-REAL(IJ)) * ( XPGDYHAT(IJ+1) - XPGDYHAT(IJ) )
 !
   WRITE(*,*) 'x=', ZXHAT
   WRITE(*,*) 'y=', ZYHAT
diff --git a/src/MNH/zdiffusetup.f90 b/src/MNH/zdiffusetup.f90
index 40f2b1c795934cd9bf7c22920fd03520900a4a60..b6751b5eaa29f58ca781b51bfac70ec70991f4bf 100644
--- a/src/MNH/zdiffusetup.f90
+++ b/src/MNH/zdiffusetup.f90
@@ -53,23 +53,24 @@ END MODULE MODI_ZDIFFUSETUP
 ! Modifications:
 !  J. Escobar  07/10/2015: remove print
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !
 !*       0.    DECLARATIONS
 !              ------------ 
+USE MODD_ARGSLIST_ll, ONLY: LIST_ll, HALO2LIST_ll
+USE MODD_CONF
 USE MODD_CST
 USE MODD_PARAMETERS
-USE MODD_CONF
-USE MODI_RELAX
+use modd_precision,   only: MNHINT_MPI
+USE MODD_VAR_ll,      ONLY: NMNH_COMM_WORLD
+!
 USE MODE_ll
-USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
-USE MODI_SHUMAN
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll, HALO2LIST_ll
+USE MODE_SUM_LL
+USE MODE_TYPE_ZDIFFU
 !
+USE MODI_RELAX
+USE MODI_SHUMAN
 !
-!JUAN
-USE MODE_TYPE_ZDIFFU
-USE MODE_SUM_LL
-!JUAN 
 IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
@@ -219,7 +220,7 @@ IKMAX_HALO2 = MAX(PZDIFFU_HALO2%NZDI,PZDIFFU_HALO2%NZDJ)
 PZDIFFU_HALO2%NZDLB = MAXVAL(IKMAX_HALO2) ! Model level, above which a truly horizontal computation of diffusion
                               ! is possible at all grid points
 !JUAN
-CALL MPI_ALLREDUCE(PZDIFFU_HALO2%NZDLB ,KZDLB_ll, 1, MPI_INTEGER, MPI_MAX, NMNH_COMM_WORLD, IERR)
+CALL MPI_ALLREDUCE(PZDIFFU_HALO2%NZDLB ,KZDLB_ll, 1, MNHINT_MPI, MPI_MAX, NMNH_COMM_WORLD, IERR)
 
 !print*,"zdiffusetup:: PZDIFFU_HALO2%NZDLB=",PZDIFFU_HALO2%NZDLB,KZDLB_ll
 PZDIFFU_HALO2%NZDLB = KZDLB_ll
diff --git a/src/MNH/zsect.f90 b/src/MNH/zsect.f90
index 39367d92da6a136235863804795df29553c10344..80abddd4356024cb922872e2e4b47ff85eb6512b 100644
--- a/src/MNH/zsect.f90
+++ b/src/MNH/zsect.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$ $Date$
-!-----------------------------------------------------------------
 !     #################
       MODULE MODI_ZSECT
 !     #################
@@ -63,6 +59,7 @@ END MODULE MODI_ZSECT
 !!      Original    08/12/94
 !!      J. Escobar  24/03/2012 modif for reprod sum
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
+!  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -145,7 +142,7 @@ ENDDO
 !
    PHORSECT = SUM_DD_R2_ll(ZVARZSECT) ! mask included with 0.0 value
 
-   ZCOUNT   = FLOAT(COUNT(GMASK))
+   ZCOUNT   = REAL(COUNT(GMASK))
    CALL REDUCESUM_ll(ZCOUNT,IINFO_ll)
 
 IF (ZCOUNT > 0.0 ) THEN
diff --git a/src/SURFEX/interpol_npts.F90 b/src/SURFEX/interpol_npts.F90
index 1cf360b69b234eae1c2ae8b35684b7c5e9589793..8f3d25e867dcf7d1228eabc9f75626622e820288 100644
--- a/src/SURFEX/interpol_npts.F90
+++ b/src/SURFEX/interpol_npts.F90
@@ -46,7 +46,8 @@
 !!    Original    03/2004
 !!    Modification
 !!    B. Decharme  2014  scan all point case if gaussien grid or NHALO = 0
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !----------------------------------------------------------------------------
 !
 !*    0.     DECLARATION
@@ -70,6 +71,8 @@ USE PARKIND1  ,ONLY : JPRB
 !
 #ifdef SFX_MNH
 USE MODD_IO, ONLY : ISP, ISNPROC, NIO_RANK
+use modd_mpif
+use modd_precision,    only: MNHINT_MPI, MNHREAL_MPI
 USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
 USE MODE_GATHER_ll
 USE MODE_TOOLS_ll,     ONLY : GET_GLOBALDIMS_ll
@@ -80,7 +83,7 @@ USE MODD_IO_SURF_MNH, ONLY : NIU, NJU
 !
 IMPLICIT NONE
 !
-#if defined(SFX_MPI) || defined(SFX_MNH)
+#if defined(SFX_MPI)
 INCLUDE "mpif.h"
 #endif
 !
@@ -206,8 +209,10 @@ ENDIF
 !
 !...known by all tasks
 IF (NPROC>1) THEN
-#if defined(SFX_MPI) || defined(SFX_MNH)
+#if defined(SFX_MPI)
   CALL MPI_BCAST(ISIZE_TOT,IDIM_FULL*KIND(ISIZE_TOT)/4,MPI_INTEGER,NPIO,NCOMM,INFOMPI)
+#elif defined(SFX_MNH)
+  CALL MPI_BCAST(ISIZE_TOT,IDIM_FULL,MNHINT_MPI,NPIO,NCOMM,INFOMPI)
 #endif
 ENDIF
 !
@@ -289,10 +294,10 @@ IF (IOLD==2) THEN
   DEALLOCATE(ZCOORD_2D,ZCOORD_2D_ALL)
   !
   IF (NPROC>1) THEN
-    CALL MPI_BCAST(INUM_TOT,IDIM_FULL*KIND(INUM_TOT)/4,MPI_INTEGER,NPIO,NCOMM,INFOMPI)
-    CALL MPI_BCAST(IINDEX_TOT,IDIM_FULL*KIND(IINDEX_TOT)/4,MPI_INTEGER,NPIO,NCOMM,INFOMPI)
-    CALL MPI_BCAST(ZX,IDIM_FULL*KIND(ZX)/4,MPI_REAL,NPIO,NCOMM,INFOMPI)
-    CALL MPI_BCAST(ZY,IDIM_FULL*KIND(ZY)/4,MPI_REAL,NPIO,NCOMM,INFOMPI)
+    CALL MPI_BCAST(INUM_TOT,IDIM_FULL,MNHINT_MPI,NPIO,NCOMM,INFOMPI)
+    CALL MPI_BCAST(IINDEX_TOT,IDIM_FULL,MNHINT_MPI,NPIO,NCOMM,INFOMPI)
+    CALL MPI_BCAST(ZX,IDIM_FULL,MNHREAL_MPI,NPIO,NCOMM,INFOMPI)
+    CALL MPI_BCAST(ZY,IDIM_FULL,MNHREAL_MPI,NPIO,NCOMM,INFOMPI)
   ENDIF
 !
 #endif
@@ -437,9 +442,11 @@ ALLOCATE(ISIZE(0:NPROC-1))
 
 !numbers of points to interpolated are gathered
 IF (NPROC>1) THEN
-#if defined(SFX_MPI) || defined(SFX_MNH)
+#if defined(SFX_MPI)
   CALL MPI_ALLGATHER(ICPT,KIND(ICPT)/4,MPI_INTEGER,&
                      ISIZE,KIND(ISIZE)/4,MPI_INTEGER,NCOMM,INFOMPI)
+#elif  defined(SFX_MNH)
+  CALL MPI_ALLGATHER(ICPT,1,MNHINT_MPI,ISIZE,1,MNHINT_MPI,NCOMM,INFOMPI)
 #endif
 ELSE
   ISIZE(:) = ICPT
@@ -474,12 +481,16 @@ ALLOCATE(ININD_ALL(MAXVAL(ISIZE),KNPTS,0:NPROC-1))
 IF (NPROC>1) THEN
   !for each task
   DO JP=0,NPROC-1
-#if defined(SFX_MPI) || defined(SFX_MNH)  
+#if defined(SFX_MPI)
     !inind_all receives from all tasks the points they need that are
     !located in it
     CALL MPI_GATHER(ININD0(:,:,JP),MAXVAL(ISIZE)*KNPTS*KIND(ININD0)/4,MPI_INTEGER,&
                     ININD_ALL,MAXVAL(ISIZE)*KNPTS*KIND(ININD_ALL)/4,MPI_INTEGER,&
                     JP,NCOMM,INFOMPI)
+#elif defined(SFX_MNH)
+    CALL MPI_GATHER(ININD0(:,:,JP),MAXVAL(ISIZE)*KNPTS,MNHINT_MPI,&
+                    ININD_ALL,     MAXVAL(ISIZE)*KNPTS,MNHINT_MPI,&
+                    JP,NCOMM,INFOMPI)
 #endif
   ENDDO
   !
@@ -514,9 +525,12 @@ DEALLOCATE(ININD_ALL)
 ALLOCATE(ZFIELD2(ICPT,KNPTS,SIZE(PFIELD,2),0:NPROC-1))
 IF (NPROC>1) THEN
   DO JP=0,NPROC-1
-#if defined(SFX_MPI) || defined(SFX_MNH)
+#if defined(SFX_MPI)
     CALL MPI_GATHER(ZFIELD(1:ISIZE(JP),:,:,JP),SIZE(ZFIELD(1:ISIZE(JP),:,:,JP))*KIND(ZFIELD)/4,MPI_REAL,&
                     ZFIELD2,ISIZE(JP)*KNPTS*SIZE(PFIELD,2)*KIND(ZFIELD2)/4,MPI_REAL,JP,NCOMM,INFOMPI)
+#elif defined(SFX_MNH)
+    CALL MPI_GATHER(ZFIELD(1:ISIZE(JP),:,:,JP),SIZE(ZFIELD(1:ISIZE(JP),:,:,JP)),MNHREAL_MPI,&
+                    ZFIELD2,ISIZE(JP)*KNPTS*SIZE(PFIELD,2),MNHREAL_MPI,JP,NCOMM,INFOMPI)
 #endif
   ENDDO
 ELSE
diff --git a/src/SURFEX/make_lcover.F90 b/src/SURFEX/make_lcover.F90
index 32d01144b21e93409c23bb608fc63bf8661fc93e..7cced8572f1a879d4d63591ef6fbc70560dadd1c 100644
--- a/src/SURFEX/make_lcover.F90
+++ b/src/SURFEX/make_lcover.F90
@@ -33,7 +33,8 @@
 !!    ------------
 !!
 !!    Original    10/12/97
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !!
 !----------------------------------------------------------------------------
 !
@@ -47,12 +48,14 @@ USE PARKIND1  ,ONLY : JPRB
 !
 #ifdef SFX_MNH
 USE MODD_IO, ONLY : ISP, ISNPROC, NIO_RANK
+use modd_mpif
+use modd_precision,   only: MNHLOG_MPI
 USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
 #endif
 !
 IMPLICIT NONE
 !
-#if defined(SFX_MPI) || defined(SFX_MNH)
+#if defined(SFX_MPI)
 INCLUDE "mpif.h"
 #endif
 !
@@ -96,9 +99,12 @@ ALLOCATE(GCOVER_ALL(SIZE(OCOVER),0:NPROC-1))
 !
 !
 IF (NPROC>1) THEN
-#if defined(SFX_MPI) || defined(SFX_MNH)
+#if defined(SFX_MPI)
   CALL MPI_ALLGATHER(OCOVER,SIZE(OCOVER),MPI_LOGICAL,GCOVER_ALL,SIZE(OCOVER),&
                   MPI_LOGICAL,NCOMM,INFOMPI)
+#elif defined(SFX_MNH)
+  CALL MPI_ALLGATHER(OCOVER,SIZE(OCOVER),MNHLOG_MPI,GCOVER_ALL,SIZE(OCOVER),&
+                  MNHLOG_MPI,NCOMM,INFOMPI)
 #endif
 ELSE
   GCOVER_ALL(:,0) = OCOVER(:)
@@ -116,8 +122,10 @@ DEALLOCATE(GCOVER_ALL)
 !
 !
 IF (NPROC>1) THEN
-#if defined(SFX_MPI) || defined(SFX_MNH)
+#if defined(SFX_MPI)
   CALL MPI_BCAST(OCOVER,SIZE(OCOVER),MPI_LOGICAL,NPIO,NCOMM,INFOMPI)
+#elif defined(SFX_MNH)
+  CALL MPI_BCAST(OCOVER,SIZE(OCOVER),MNHLOG_MPI,NPIO,NCOMM,INFOMPI)
 #endif
 ENDIF
 !
diff --git a/src/SURFEX/mode_gridtype_conf_proj.F90 b/src/SURFEX/mode_gridtype_conf_proj.F90
index 4e88934141e9499651e690231f105ef169a1cd4d..8b908913e824833cd1b94eec7f62becd3ab32033 100644
--- a/src/SURFEX/mode_gridtype_conf_proj.F90
+++ b/src/SURFEX/mode_gridtype_conf_proj.F90
@@ -1,4 +1,4 @@
-!SFX_LIC Copyright 2004-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2004-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !SFX_LIC for details. version 1.
@@ -33,7 +33,8 @@ CONTAINS
 !!    -------------
 !!      Original    01/2004
 !!        M.Moge    06/2015 broadcast the space step to all MPI processes (necessary for reproductibility)
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -42,7 +43,7 @@ CONTAINS
 USE MODD_SURF_PAR, ONLY : XUNDEF, NUNDEF
 #ifdef MNH_PARALLEL
 USE MODD_MPIF
-use modd_precision, only: MNHREAL_MPI
+use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
 USE MODE_SPLITTINGZ_ll, ONLY : LINI_PARAZ
 USE MODE_TOOLS_ll, ONLY : GET_OR_ll
 USE MODD_VAR_ll, ONLY : NPROC, IP, NMNH_COMM_WORLD, YSPLITTING
@@ -129,24 +130,24 @@ IF ( NPROC > 1 .AND. LINI_PARAZ) THEN
     IYOR = NUNDEF
   ENDIF
   ! get the processes with IL>0 with the westmost points
-  CALL MPI_ALLREDUCE(IXOR, IXORMIN, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) 
+  CALL MPI_ALLREDUCE(IXOR, IXORMIN, 1, MNHINT_MPI, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll)
   IF ( IXOR == IXORMIN ) THEN
     IROOT = IP-1
   ELSE
     IROOT = NPROC
   ENDIF
-  CALL MPI_ALLREDUCE(IROOT, IROOTPROC, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) 
+  CALL MPI_ALLREDUCE(IROOT, IROOTPROC, 1, MNHINT_MPI, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll)
 ! Then this process broadcasts the space steps in X direction in order to have the same space steps on all processes
   CALL MPI_BCAST(PGRID_PAR(9), 1, MNHREAL_MPI, IROOTPROC, NMNH_COMM_WORLD, IINFO_ll)
   !
   ! get the processes with IL>0 with the southmost points
-  CALL MPI_ALLREDUCE(IYOR, IYORMIN, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) 
+  CALL MPI_ALLREDUCE(IYOR, IYORMIN, 1, MNHINT_MPI, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll)
   IF ( IYOR == IYORMIN ) THEN
     IROOT = IP-1
   ELSE
     IROOT = NPROC
   ENDIF
-  CALL MPI_ALLREDUCE(IROOT, IROOTPROC, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) 
+  CALL MPI_ALLREDUCE(IROOT, IROOTPROC, 1, MNHINT_MPI, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll)
 ! Then this process broadcasts the space steps in Y direction in order to have the same space steps on all processes
   CALL MPI_BCAST(PGRID_PAR(10), 1, MNHREAL_MPI, IROOTPROC, NMNH_COMM_WORLD, IINFO_ll)
 ENDIF
diff --git a/src/SURFEX/read_lcover.F90 b/src/SURFEX/read_lcover.F90
index 0d60f0e6191727e652f2534e92e4a24d9c8c9b40..f9fb8e5144b7502648c6797456137ade4502735a 100644
--- a/src/SURFEX/read_lcover.F90
+++ b/src/SURFEX/read_lcover.F90
@@ -1,4 +1,4 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2008-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !SFX_LIC for details. version 1.
@@ -38,13 +38,16 @@
 !!      Original    10/2008
 !!      M. Moge     02/2015 parallelization for mésonh
 !!      J. Pianezze 08/2016 replacement of MPI_COMM_WOLRD by NMNH_COMM_WORLD
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !              ------------
 !
 #ifdef MNH_PARALLEL
-USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
+use modd_mpif
+use modd_precision,      only: MNHLOG_MPI
+USE MODD_VAR_ll,         ONLY: NMNH_COMM_WORLD
 #endif
 !
 USE MODD_DATA_COVER_PAR, ONLY : JPCOVER
@@ -57,11 +60,6 @@ USE PARKIND1  ,ONLY : JPRB
 !
 IMPLICIT NONE
 !
-#ifdef MNH_PARALLEL
-#ifndef NOMPI
-INCLUDE "mpif.h"
-#endif
-#endif
 !
 !*       0.1   Declarations of arguments
 !              -------------------------
@@ -104,11 +102,7 @@ OCOVER=.FALSE.
 OCOVER(:SIZE(GCOVER))=GCOVER(:)
 !
 #ifdef MNH_PARALLEL
-#ifndef NOMPI
-CALL MPI_ALLREDUCE(GCOVER, OCOVER, SIZE(GCOVER),MPI_LOGICAL, MPI_LOR, NMNH_COMM_WORLD, IINFO)
-#else
-CALL MPI_ALLREDUCE(GCOVER, OCOVER, SIZE(GCOVER),MPI_LOGICAL, MPI_LOR, MPI_COMM_WORLD, IINFO)
-#endif
+CALL MPI_ALLREDUCE(GCOVER, OCOVER, SIZE(GCOVER), MNHLOG_MPI, MPI_LOR, NMNH_COMM_WORLD, IINFO)
 #endif
 !
 DEALLOCATE(GCOVER)
diff --git a/src/SURFEX/write_lcover.F90 b/src/SURFEX/write_lcover.F90
index 32a1be568e9eb8aac8db7094671173300b7423fa..6881c143d5aae3be0bd3d56b81081c453a0cec4d 100644
--- a/src/SURFEX/write_lcover.F90
+++ b/src/SURFEX/write_lcover.F90
@@ -1,4 +1,4 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !SFX_LIC for details. version 1.
@@ -36,6 +36,7 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      J. Pianezze 08/2016 replacement of MPI_COMM_WOLRD by NMNH_COMM_WORLD
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !!
 !-------------------------------------------------------------------------------
 !
@@ -43,7 +44,9 @@
 !              ------------
 !
 #ifdef MNH_PARALLEL
-USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
+use modd_mpif
+use modd_precision,      only: MNHLOG_MPI
+USE MODD_VAR_ll,         ONLY: NMNH_COMM_WORLD
 #endif
 !
 USE MODD_DATA_COVER_PAR, ONLY : JPCOVER
@@ -55,11 +58,6 @@ USE PARKIND1  ,ONLY : JPRB
 !
 IMPLICIT NONE
 !
-#ifdef MNH_PARALLEL
-#ifndef NOMPI
-INCLUDE "mpif.h"
-#endif
-#endif
 !
 !*       0.1   Declarations of arguments
 !              -------------------------
@@ -83,11 +81,9 @@ INTEGER   :: IINFO
 !* ascendant compatibility
 IF (LHOOK) CALL DR_HOOK('WRITE_LCOVER',0,ZHOOK_HANDLE)
 #ifdef MNH_PARALLEL
-#ifndef NOMPI
-CALL MPI_ALLREDUCE(OCOVER, GCOVER, SIZE(OCOVER),MPI_LOGICAL, MPI_LOR, NMNH_COMM_WORLD, IINFO)
+CALL MPI_ALLREDUCE(OCOVER, GCOVER, SIZE(OCOVER), MNHLOG_MPI, MPI_LOR, NMNH_COMM_WORLD, IINFO)
 OCOVER(:)=GCOVER(:)
 #endif
-#endif
 YRECFM='COVER_LIST'
 YCOMMENT='(LOGICAL LIST)'
 CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,OCOVER(:),IRESP,HCOMMENT=YCOMMENT,HDIR='-')