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='-')