diff --git a/A-INSTALL b/A-INSTALL
index 7d0d2ad77ff178889189042e7a7db047c77c9946..e9fcf06f82d72f0ce656fbaac3f47b67f067bbe4 100644
--- a/A-INSTALL
+++ b/A-INSTALL
@@ -1076,9 +1076,13 @@ etc ...
 # REM : the 'profile_mesonh...' file & the 'dir_obj...' directory will be suffixed with an ECRAD extension 
 #
 #  Usage :
-#   1) In namelist replace RAD='ECMW' be RAD='ECRA' 
-#   2) Add link to 'ecrad-1.0.1/data' files 
-#      see 007_16janvier/008_run2 test case for example
+#   1) In namelist replace RAD='ECMW' by RAD='ECRA' 
+#   2) Add link to all 'ecrad-1.0.1/data' files in your mesonh run directory
+ln -sf ${SRC_MESONH}/src/LIB/RAD/ecrad-1.0.1/data/* .
+#
+# REM : you can replace CDATADIR = "." by CDATADIR = "data" of ini_radiations_ecrad.f90 to link only the data folder instead of all the files one by one
+#
+# See 007_16janvier/008_run2 test case for example
 #
 # d) MNH_MEGAN for optional compilation of MEGAN code 
 # --------------------------------------
diff --git a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90
index 5abc98b1e2e5663dc251939d12f7067d84d7a6b4..3b757c3bc97d5f5d9b8f21bebc65bb8909973480 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.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 19/09/2019: add possibility to provide a fallback file if some information are not found in the input file
+!-----------------------------------------------------------------
 program LFI2CDF
   USE MODD_CONF,          ONLY: CPROGRAM
   USE MODD_CONFZ,         ONLY: NB_PROCIO_R
@@ -33,7 +36,7 @@ program LFI2CDF
   INTEGER :: IINFO_ll         ! return code of // routines
   INTEGER :: nfiles_out   = 0 ! number of output files
   CHARACTER(LEN=:),allocatable :: hvarlist
-  TYPE(TFILE_ELT),DIMENSION(1)        :: infiles
+  TYPE(TFILE_ELT),DIMENSION(2)        :: infiles
   TYPE(TFILE_ELT),DIMENSION(MAXFILES) :: outfiles
 
   TYPE(workfield), DIMENSION(:), POINTER :: tzreclist
@@ -152,7 +155,11 @@ program LFI2CDF
      CALL fill_files(infiles,outfiles,tzreclist,nbvar,options)
   END IF
 
-  CALL CLOSE_FILES(infiles, 1)
+  if ( options( OPTFALLBACK )%set ) then
+    CALL CLOSE_FILES(infiles, 2)
+  else
+    CALL CLOSE_FILES(infiles, 1)
+  end if
   CALL CLOSE_FILES(outfiles,nfiles_out)
-  
+
 end program LFI2CDF
diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90
index 1740187f0964e318455240e2c869398bfd2c9abe..e578f204cd7f11353fa6bbcc329c30456f371b44 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90
@@ -1,20 +1,24 @@
-!MNH_LIC Copyright 2015-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2015-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 19/09/2019: add possibility to provide a fallback file if some information are not found in the input file
+!  P. Wautelet 21/10/2019: add OPTDIR option to set directory for writing outfiles
+!-----------------------------------------------------------------
 module mode_options
   USE MODE_FIELD, ONLY: TYPEUNDEF, TYPEINT, TYPELOG, TYPEREAL, TYPECHAR, TYPEDATE
 
   implicit none
 
-  integer,parameter :: nbavailoptions = 10
+  integer,parameter :: NBAVAILOPTIONS = 12
   integer,parameter :: MODEUNDEF = -11, MODECDF2CDF = 11, MODELFI2CDF = 12, MODECDF2LFI = 13
 
-  integer,parameter :: OPTCOMPRESS = 1, OPTHELP   = 2, OPTLIST   = 3
-  integer,parameter :: OPTMERGE    = 4, OPTOUTPUT = 5, OPTREDUCE = 6
-  integer,parameter :: OPTMODE     = 7, OPTSPLIT  = 8, OPTVAR    = 9
-  integer,parameter :: OPTVERBOSE  = 10
+  integer,parameter :: OPTCOMPRESS = 1,  OPTHELP     = 2,  OPTLIST   = 3
+  integer,parameter :: OPTMERGE    = 4,  OPTOUTPUT   = 5,  OPTREDUCE = 6
+  integer,parameter :: OPTMODE     = 7,  OPTSPLIT    = 8,  OPTVAR    = 9
+  integer,parameter :: OPTVERBOSE  = 10, OPTFALLBACK = 11, OPTDIR    = 12
 
   type option
     logical :: set = .false.
@@ -153,6 +157,17 @@ subroutine init_options(options)
   options(OPTVERBOSE)%long_name    = "verbose"
   options(OPTVERBOSE)%short_name   = 'V'
   options(OPTVERBOSE)%has_argument = .false.
+
+  options(OPTFALLBACK)%long_name    = "fallback-file"
+  options(OPTFALLBACK)%short_name   = 'f'
+  options(OPTFALLBACK)%has_argument = .true.
+  options(OPTFALLBACK)%type         = TYPECHAR
+
+  options(OPTDIR)%long_name    = "outdir"
+  options(OPTDIR)%short_name   = 'd'
+  options(OPTDIR)%has_argument = .true.
+  options(OPTDIR)%type         = TYPECHAR
+
 end subroutine init_options
 
 subroutine get_option(options,finished)
@@ -323,18 +338,21 @@ subroutine help()
 !TODO: -l option for cdf2cdf and cdf2lfi
   print *,"Usage : lfi2cdf [-h --help] [-l] [-v --var var1[,...]] [-r --reduce-precision]"
   print *,"                [-m --merge number_of_z_levels] [-s --split] [-o --output output-file.nc]"
-  print *,"                [-R --runmode mode] [-V --verbose]"
+  print *,"                [-R --runmode mode] [-V --verbose] [-f --fallback-file fallback-file]"
   print *,"                [-c --compress compression_level] input-file.lfi"
   print *,"        cdf2cdf [-h --help] [-v --var var1[,...]] [-r --reduce-precision]"
   print *,"                [-m --merge number_of_split_files] [-s --split] [-o --output output-file.nc]"
-  print *,"                [-R --runmode mode] [-V --verbose]"
+  print *,"                [-R --runmode mode] [-V --verbose] [-f --fallback-file fallback-file]"
   print *,"                [-c --compress compression_level] input-file.nc"
-  print *,"        cdf2lfi [-o --output output-file.lfi] [-R --runmode mode]  [-V --verbose] input-file.nc"
+  print *,"        cdf2lfi [-o --output output-file.lfi] [-R --runmode mode]  [-V --verbose]"
+  print *,"                [-f --fallback-file fallback-file] input-file.nc"
   print *,""
   print *,"Options:"
   print *,"  --compress, -c compression_level"
   print *,"     Compress data. The compression level should be in the 1 to 9 interval."
   print *,"     Only supported with the netCDF format (cdf2cdf and lfi2cdf only)"
+  print *,"  -f --fallback-file fallback-file"
+  print *,"     File to use to read some grid information if not found in input-file"
   print *,"  --help, -h"
   print *,"     Print this text"
   print *,"  --list, -l"
diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
index bf5f280aa15166f970d6c4b50b940c4d8db55f15..8dc5e9dc3d0a82e77f11381c496f99c2cf6a1cfd 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
@@ -8,11 +8,15 @@
 !  P. Wautelet 10/04/2019: use IO_Err_handle_nc4 to handle netCDF errors
 !  P. Wautelet 25/06/2019: add support for 3D integer arrays
 !  P. Wautelet 01/08/2019: allow merge of entire Z-split files
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
+!  P. Wautelet 19/09/2019: add possibility to provide a fallback file if some information are not found in the input file
+!  P. Wautelet 21/10/2019: add OPTDIR option to set directory for writing outfiles
+!  P. Wautelet 21/10/2019: if DTMOD and DTCUR not found, try to read the time coordinate
 !-----------------------------------------------------------------
 MODULE mode_util
   USE MODD_IO,         ONLY: TFILEDATA, TFILE_ELT
   USE MODD_NETCDF,     ONLY: DIMCDF, CDFINT
-  USE MODD_PARAMETERS, ONLY: JPVEXT, NLFIMAXCOMMENTLENGTH, NMNHNAMELGTMAX
+  USE MODD_PARAMETERS, ONLY: NLFIMAXCOMMENTLENGTH, NMNHNAMELGTMAX
   use modd_precision,  only: LFIINT
 
   USE MODE_FIELD
@@ -41,12 +45,12 @@ MODULE mode_util
      LOGICAL                               :: LSPLIT = .FALSE. ! TRUE if variable is split by vertical level
      INTEGER                               :: NSIZE = 0 ! Size of the variable (in number of elements)
      INTEGER                               :: NSRC = 0 ! Number of variables used to compute the variable (needed only if calc=.true.)
-     INTEGER                               :: NDIMS_FILE  ! Number of dims (as present in input file)
-     INTEGER,DIMENSION(:),ALLOCATABLE      :: NDIMSIZES_FILE  ! Dimensions sizes (as present in input file)
+     INTEGER(kind=CDFINT)                  :: NDIMS_FILE  ! Number of dims (as present in input file)
+     INTEGER(kind=CDFINT),    DIMENSION(:),ALLOCATABLE :: NDIMSIZES_FILE  ! Dimensions sizes (as present in input file)
      CHARACTER(LEN=NF90_MAX_NAME),DIMENSION(:),ALLOCATABLE :: CDIMNAMES_FILE  ! Dimensions names (as present in input file)
      CHARACTER(LEN=40)                     :: CUNITS_FILE = '' ! Units (as present in input file)
      INTEGER                               :: NGRID_FILE  ! Grid  number (as present in input file)
-     INTEGER                               :: NTYPE_FILE  ! netCDF datatype (NF90_CHAR, NF90_INT...) (as present in input file)
+     INTEGER(kind=CDFINT)                  :: NTYPE_FILE  ! netCDF datatype (NF90_CHAR, NF90_INT...) (as present in input file)
      INTEGER,DIMENSION(MAXRAW)             :: src    ! List of variables used to compute the variable (needed only if calc=.true.)
      INTEGER                               :: tgt    ! Target: id of the variable that use it (calc variable)
      TYPE(TFIELDDATA)                      :: TFIELD ! Metadata about the field
@@ -634,7 +638,8 @@ END DO
 
     CHARACTER(LEN=16) :: YMNHVERSION
     CHARACTER(LEN=:),ALLOCATABLE :: YHISTORY
-    INTEGER :: ilen, ji
+    INTEGER              :: ji
+    INTEGER(KIND=CDFINT) :: ilen
     INTEGER(KIND=CDFINT) :: status
     INTEGER(KIND=CDFINT) :: kcdf_id
 
@@ -853,8 +858,8 @@ END DO
           ALLOCATE(XTAB3D(IDIMLEN(1),IDIMLEN(2),IDIMLEN(3)))
           IF (tpreclist(ji)%calc) ALLOCATE(XTAB3D2(IDIMLEN(1),IDIMLEN(2),IDIMLEN(3)))
           !Hack not very clean: 3D LB fields are not split
-          !If NSUBFILES_IOZ is set to 0, IO_READ_FIELD will read it as a non-split field
-          !CAUTION: there are no guarantee the IO_READ_FIELD will continue to use this information that way...
+          !If NSUBFILES_IOZ is set to 0, IO_Field_read will read it as a non-split field
+          !CAUTION: there are no guarantee the IO_Field_read will continue to use this information that way...
           if ( tpreclist(ji)%tfield%clbtype /= 'NONE' .or. tpreclist(ji)%name(1:2) == 'LB' ) then
             tzfile = infiles(1)%tfile
             tzfile%nsubfiles_ioz=0
@@ -967,6 +972,7 @@ END DO
   SUBROUTINE OPEN_FILES(infiles,outfiles,KNFILES_OUT,hinfile,houtfile,nbvar_infile,options,runmode)
     USE MODD_CONF,          ONLY: LCARTESIAN
     USE MODD_CONF_n,        ONLY: CSTORAGE_TYPE
+    USE MODD_CONFZ,         ONLY: NB_PROCIO_R
     USE MODD_DIM_n,         ONLY: NIMAX_ll, NJMAX_ll, NKMAX
     USE MODD_GRID,          ONLY: XBETA, XRPK, XLAT0, XLON0, XLATORI, XLONORI
     USE MODD_GRID_n,        ONLY: LSLEVE, XXHAT, XYHAT, XZHAT
@@ -987,10 +993,15 @@ END DO
     TYPE(option),DIMENSION(:),   INTENT(IN)  :: options
     INTEGER,                     INTENT(IN)  :: runmode
 
-    INTEGER              :: idx, IRESP2
-    INTEGER(KIND=CDFINT) :: omode
-    INTEGER(KIND=CDFINT) :: status
-    INTEGER(KIND=LFIINT) :: ilu,iresp
+    character(len=:), allocatable :: yunits
+    INTEGER                       :: idx, IRESP2
+    integer                       :: inb_procio_r_save
+    INTEGER(KIND=CDFINT)          :: ioldmode
+    INTEGER(KIND=CDFINT)          :: istatus
+    INTEGER(KIND=CDFINT)          :: ivar_id
+    integer(kind=CDFINT)          :: ilen
+    INTEGER(KIND=LFIINT)          :: ilu,iresp
+    logical                       :: gok
 
 
     CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_FILES','called')
@@ -1007,6 +1018,15 @@ END DO
        CALL IO_FILE_OPEN(INFILES(1)%TFILE)
 
        nbvar_infile = INFILES(1)%TFILE%NNCNAR
+
+       !Open fallback file if provided
+       if ( options( OPTFALLBACK )%set ) then
+         inb_procio_r_save = NB_PROCIO_R
+         NB_PROCIO_R = 1
+         CALL IO_FILE_ADD2LIST(INFILES(2)%TFILE,options( OPTFALLBACK )%cvalue,'UNKNOWN','READ',HFORMAT='NETCDF4')
+         CALL IO_FILE_OPEN(INFILES(2)%TFILE)
+         NB_PROCIO_R = inb_procio_r_save
+       end if
    ELSE
        !
        ! LFI
@@ -1024,52 +1044,158 @@ END DO
           CALL IO_FILE_CLOSE(INFILES(1)%TFILE)
           return
        END IF
+
+       !Open fallback file if provided
+       if ( options( OPTFALLBACK )%set ) then
+         inb_procio_r_save = NB_PROCIO_R
+         NB_PROCIO_R = 1
+         CALL IO_FILE_ADD2LIST(INFILES(2)%TFILE,options( OPTFALLBACK )%cvalue,'UNKNOWN','READ', &
+                               HFORMAT='LFI',KLFIVERB=0)
+         CALL IO_FILE_OPEN(INFILES(2)%TFILE)
+         NB_PROCIO_R = inb_procio_r_save
+       end if
    END IF
    !
    !Read problem dimensions and some grid variables (needed to determine domain size and also by IO_FILE_OPEN to create netCDF files)
-   CALL IO_Field_read(INFILES(1)%TFILE,'JPHEXT',JPHEXT)
+   JPHEXT = 1
+   CALL IO_Field_read(INFILES(1)%TFILE,'JPHEXT',JPHEXT,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'JPHEXT',JPHEXT,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'JPHEXT not found')
+
    JPHEXT_ll = JPHEXT
    JPVEXT_ll = JPVEXT
    !
    ALLOCATE(NIMAX_ll,NJMAX_ll,NKMAX)
-   CALL IO_Field_read(INFILES(1)%TFILE,'IMAX',NIMAX_ll)
-   CALL IO_Field_read(INFILES(1)%TFILE,'JMAX',NJMAX_ll)
+   CALL IO_Field_read(INFILES(1)%TFILE,'IMAX',NIMAX_ll,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'IMAX',NIMAX_ll,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'IMAX not found')
+
+   CALL IO_Field_read(INFILES(1)%TFILE,'JMAX',NJMAX_ll,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'JMAX',NJMAX_ll,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'JMAX not found')
+
    CALL IO_Field_read(INFILES(1)%TFILE,'KMAX',NKMAX,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'KMAX',NKMAX,IRESP2)
    IF (IRESP2/=0) NKMAX = 0
    !
-   CALL IO_Field_read(INFILES(1)%TFILE,'PROGRAM',CPROGRAM_ORIG)
+   CALL IO_Field_read(INFILES(1)%TFILE,'PROGRAM',CPROGRAM_ORIG,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'PROGRAM',CPROGRAM_ORIG,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'PROGRAM not found')
    !
    ALLOCATE(CSTORAGE_TYPE)
-   CALL IO_Field_read(INFILES(1)%TFILE,'STORAGE_TYPE',CSTORAGE_TYPE)
+   CALL IO_Field_read(INFILES(1)%TFILE,'STORAGE_TYPE',CSTORAGE_TYPE,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'STORAGE_TYPE',CSTORAGE_TYPE,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'STORAGE_TYPE not found')
    !
    ALLOCATE(XXHAT(NIMAX_ll+2*JPHEXT))
-   CALL IO_Field_read(INFILES(1)%TFILE,'XHAT',XXHAT)
+   CALL IO_Field_read(INFILES(1)%TFILE,'XHAT',XXHAT,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'XHAT',XXHAT,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'XHAT not found')
+
    ALLOCATE(XYHAT(NJMAX_ll+2*JPHEXT))
-   CALL IO_Field_read(INFILES(1)%TFILE,'YHAT',XYHAT)
-   CALL IO_Field_read(INFILES(1)%TFILE,'CARTESIAN',LCARTESIAN)
-   !
-   CALL IO_Field_read(INFILES(1)%TFILE,'LAT0',XLAT0)
-   CALL IO_Field_read(INFILES(1)%TFILE,'LON0',XLON0)
-   CALL IO_Field_read(INFILES(1)%TFILE,'BETA',XBETA)
-   !
+   CALL IO_Field_read(INFILES(1)%TFILE,'YHAT',XYHAT,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'YHAT',XYHAT,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'YHAT not found')
+
+   CALL IO_Field_read(INFILES(1)%TFILE,'CARTESIAN',LCARTESIAN,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'CARTESIAN',LCARTESIAN,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'CARTESIAN not found')
+
+   CALL IO_Field_read(INFILES(1)%TFILE,'LAT0',XLAT0,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'LAT0',XLAT0,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'LAT0 not found')
+
+   CALL IO_Field_read(INFILES(1)%TFILE,'LON0',XLON0,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'LON0',XLON0,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'LON0 not found')
+
+   CALL IO_Field_read(INFILES(1)%TFILE,'BETA',XBETA,IRESP2)
+   !If not found in main file, try the fallback one
+   if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'BETA',XBETA,IRESP2)
+   if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'BETA not found')
+
    IF (.NOT.LCARTESIAN) THEN
-     CALL IO_Field_read(INFILES(1)%TFILE,'RPK',   XRPK)
-     CALL IO_Field_read(INFILES(1)%TFILE,'LATORI',XLATORI)
-     CALL IO_Field_read(INFILES(1)%TFILE,'LONORI',XLONORI)
+     CALL IO_Field_read(INFILES(1)%TFILE,'RPK',   XRPK,   IRESP2)
+    !If not found in main file, try the fallback one
+    if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'RPK',   XRPK,IRESP2)
+    if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'RPK not found')
+
+     CALL IO_Field_read(INFILES(1)%TFILE,'LATORI',XLATORI,IRESP2)
+    !If not found in main file, try the fallback one
+    if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'LATORI',XLATORI,IRESP2)
+    if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'LATORI not found')
+
+     CALL IO_Field_read(INFILES(1)%TFILE,'LONORI',XLONORI,IRESP2)
+    !If not found in main file, try the fallback one
+    if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'LONORI',XLONORI,IRESP2)
+    if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'LONORI not found')
    ENDIF
    !
    IF (TRIM(CPROGRAM_ORIG)/='PGD' .AND. TRIM(CPROGRAM_ORIG)/='NESPGD' .AND. TRIM(CPROGRAM_ORIG)/='ZOOMPG' &
        .AND. .NOT.(TRIM(CPROGRAM_ORIG)=='REAL' .AND. CSTORAGE_TYPE=='SU') ) THEN !condition to detect PREP_SURFEX
      ALLOCATE(XZHAT(NKMAX+2*JPVEXT))
-     CALL IO_Field_read(INFILES(1)%TFILE,'ZHAT',XZHAT)
+     CALL IO_Field_read(INFILES(1)%TFILE,'ZHAT',XZHAT,IRESP2)
+     !If not found in main file, try the fallback one
+     if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'ZHAT',XZHAT,IRESP2)
+     if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'ZHAT not found')
+
      ALLOCATE(LSLEVE)
-     CALL IO_Field_read(INFILES(1)%TFILE,'SLEVE',LSLEVE)
+     CALL IO_Field_read(INFILES(1)%TFILE,'SLEVE',LSLEVE,IRESP2)
+     !If not found in main file, try the fallback one
+     if ( options( OPTFALLBACK )%set .and. iresp2 /= 0 ) CALL IO_Field_read(INFILES(2)%TFILE,'SLEVE',LSLEVE,IRESP2)
+     if ( iresp2 /= 0 ) call Print_msg( NVERB_ERROR, 'IO', 'OPEN_FILES', 'SLEVE not found')
+
      ALLOCATE(TDTMOD)
      CALL IO_Field_read(INFILES(1)%TFILE,'DTMOD',TDTMOD,IRESP2)
      IF(IRESP2/=0) DEALLOCATE(TDTMOD)
+
      ALLOCATE(TDTCUR)
      CALL IO_Field_read(INFILES(1)%TFILE,'DTCUR',TDTCUR,IRESP2)
      IF(IRESP2/=0) DEALLOCATE(TDTCUR)
+
+     !If time values were not found, try to get it from the time coordinate
+     if ( .not. associated( tdtcur ) .and. infiles(1)%tfile%cformat == 'NETCDF4' ) then
+       gok = .false.
+
+       istatus = NF90_INQ_VARID( infiles(1)%tfile%nncid, 'time', ivar_id )
+       if ( istatus == NF90_NOERR ) then
+         allocate( tdtcur )
+         istatus = NF90_GET_VAR( infiles(1)%tfile%nncid, ivar_id, tdtcur%time )
+         if ( istatus == NF90_NOERR ) then
+           istatus = NF90_INQUIRE_ATTRIBUTE( infiles(1)%tfile%nncid, ivar_id, 'units', len = ilen )
+           if ( istatus == NF90_NOERR ) then
+             allocate( character(len = ilen ) :: yunits )
+             istatus = NF90_GET_ATT( infiles(1)%tfile%nncid, ivar_id, 'units', yunits )
+             ! Extract date from yunits
+             idx =  INDEX( yunits, 'since ' )
+             Read( yunits(idx+6 :idx+9 ) , '( I4.4 )' ) tdtcur%tdate%year
+             Read( yunits(idx+11:idx+12 ), '( I2.2 )' ) tdtcur%tdate%month
+             Read( yunits(idx+14:idx+15 ), '( I2.2 )' ) tdtcur%tdate%day
+
+             if ( .not. associated( tdtmod ) ) then
+               allocate( tdtmod )
+               tdtmod = tdtcur
+               tdtmod%time = 0.
+             end if
+
+             gok = .true.
+           end if
+         end if
+       end if
+
+       if ( .not. gok ) deallocate( tdtcur )
+     end if
    END IF
    !
    ! Outfiles
@@ -1082,8 +1208,13 @@ END DO
          KNFILES_OUT = KNFILES_OUT + 1
 
          idx = KNFILES_OUT
-         CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,HOUTFILE,'MNH','WRITE', &
-                               HFORMAT='NETCDF4',OOLD=.TRUE.)
+         if ( options(OPTDIR)%set ) then
+           CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,HOUTFILE,'MNH','WRITE', &
+                                 HFORMAT='NETCDF4',OOLD=.TRUE., hdirname = options(OPTDIR)%cvalue )
+         else
+           CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,HOUTFILE,'MNH','WRITE', &
+                                 HFORMAT='NETCDF4',OOLD=.TRUE.)
+         end if
          CALL IO_FILE_OPEN(outfiles(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
 
          IF (options(OPTCOMPRESS)%set) THEN
@@ -1095,8 +1226,8 @@ END DO
            outfiles(idx)%tfile%LNCREDUCE_FLOAT_PRECISION = .TRUE.
          END IF
 
-         status = NF90_SET_FILL(outfiles(idx)%TFILE%NNCID,NF90_NOFILL,omode)
-         if ( status /= NF90_NOERR ) call IO_Err_handle_nc4( status, 'OPEN_FILES', 'NF90_SET_FILL', '' )
+         istatus = NF90_SET_FILL(outfiles(idx)%TFILE%NNCID,NF90_NOFILL,ioldmode)
+         if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'OPEN_FILES', 'NF90_SET_FILL', '' )
        END IF ! .NOT.osplit
     ELSE
        !
@@ -1104,8 +1235,13 @@ END DO
        !
        KNFILES_OUT = KNFILES_OUT + 1
        idx = KNFILES_OUT
-       CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,houtfile,'MNH','WRITE', &
-                             HFORMAT='LFI',KLFIVERB=0,OOLD=.TRUE.)
+       if ( options(OPTDIR)%set ) then
+         CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,houtfile,'MNH','WRITE', &
+                               HFORMAT='LFI',KLFIVERB=0,OOLD=.TRUE., hdirname = options(OPTDIR)%cvalue )
+       else
+         CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,houtfile,'MNH','WRITE', &
+                               HFORMAT='LFI',KLFIVERB=0,OOLD=.TRUE.)
+       end if
        LIOCDF4 = .FALSE. !Necessary to open correctly the LFI file
        CALL IO_FILE_OPEN(outfiles(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
        LIOCDF4 = .TRUE.
@@ -1116,8 +1252,13 @@ END DO
      KNFILES_OUT = KNFILES_OUT + 1
 
      idx = KNFILES_OUT
-     CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,'dummy_file','MNH','WRITE', &
-                           HFORMAT='NETCDF4',OOLD=.TRUE.)
+     if ( options(OPTDIR)%set ) then
+       CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,'dummy_file','MNH','WRITE', &
+                             HFORMAT='NETCDF4',OOLD=.TRUE., hdirname = options(OPTDIR)%cvalue )
+     else
+       CALL IO_FILE_ADD2LIST(outfiles(idx)%TFILE,'dummy_file','MNH','WRITE', &
+                             HFORMAT='NETCDF4',OOLD=.TRUE.)
+     end if
      CALL IO_FILE_OPEN(outfiles(idx)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
    END IF
 
@@ -1141,7 +1282,7 @@ END DO
     INTEGER                  :: ji
     INTEGER                  :: idx1, idx2
     INTEGER(KIND=CDFINT)     :: status
-    INTEGER(KIND=CDFINT)     :: omode
+    INTEGER(KIND=CDFINT)     :: ioldmode
 
     CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_SPLIT_NCFILES_OUT','called')
 
@@ -1171,8 +1312,13 @@ END DO
 
     DO ji = 1,nbvar
       filename = trim(houtfile)//'.'//TRIM(YVARS(ji))
-      CALL IO_FILE_ADD2LIST(outfiles(ji)%TFILE,filename,'MNH','WRITE', &
-                            HFORMAT='NETCDF4')
+      if ( options(OPTDIR)%set ) then
+        CALL IO_FILE_ADD2LIST(outfiles(ji)%TFILE,filename,'MNH','WRITE', &
+                              HFORMAT='NETCDF4', hdirname = options(OPTDIR)%cvalue )
+      else
+        CALL IO_FILE_ADD2LIST(outfiles(ji)%TFILE,filename,'MNH','WRITE', &
+                              HFORMAT='NETCDF4')
+      end if
       CALL IO_FILE_OPEN(outfiles(ji)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
 
       IF (options(OPTCOMPRESS)%set) THEN
@@ -1184,7 +1330,7 @@ END DO
         outfiles(ji)%tfile%LNCREDUCE_FLOAT_PRECISION = .TRUE.
       END IF
 
-      status = NF90_SET_FILL(outfiles(ji)%TFILE%NNCID,NF90_NOFILL,omode)
+      status = NF90_SET_FILL(outfiles(ji)%TFILE%NNCID,NF90_NOFILL,ioldmode)
       if ( status /= NF90_NOERR ) call IO_Err_handle_nc4( status, 'OPEN_SPLIT_NCFILES_OUT', 'NF90_SET_FILL', '' )
     END DO
 
@@ -1243,7 +1389,7 @@ END DO
     !split_variable and other attributes were added in MesoNH > 5.4.2
     ISTATUS = NF90_INQUIRE_ATTRIBUTE(IFILE_ID, KVAR_ID, 'split_variable', LEN=ILENG)
     IF (ISTATUS == NF90_NOERR) THEN
-      IF (GSPLIT_AT_ENTRY) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_GET_METADATA_NC4','split variable delcaration inside a split file')
+      IF (GSPLIT_AT_ENTRY) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Metadata_get_nc4','split variable delcaration inside a split file')
 
       ALLOCATE(CHARACTER(LEN=ILENG) :: YSPLIT)
       ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'split_variable', YSPLIT)
@@ -1253,7 +1399,7 @@ END DO
 
         ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'ndims', TPREC%NDIMS_FILE)
         IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'ndims' )
-        IF ( TPREC%NDIMS_FILE/=3 ) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_GET_METADATA_NC4', &
+        IF ( TPREC%NDIMS_FILE/=3 ) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Metadata_get_nc4', &
                                                   'split variable with ndims/=3 not supported')
 
         ISTATUS = NF90_INQUIRE_ATTRIBUTE(IFILE_ID, KVAR_ID, 'time_dependent', LEN=ILENG)
@@ -1267,7 +1413,7 @@ END DO
         ELSE IF ( YTIMEDEP == 'no' ) THEN
           TPREC%TFIELD%LTIMEDEP = .FALSE.
         ELSE
-          CALL PRINT_MSG(NVERB_WARNING,'IO','IO_GET_METADATA_NC4','unknown value '//trim(YTIMEDEP)// &
+          CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Metadata_get_nc4','unknown value '//trim(YTIMEDEP)// &
                                                                   ' for time_dependent attribute' )
         END IF
 
@@ -1286,7 +1432,67 @@ END DO
 
         DEALLOCATE(YTIMEDEP)
       ELSE IF ( YSPLIT /= 'no' ) THEN
-        CALL PRINT_MSG(NVERB_WARNING,'IO','IO_GET_METADATA_NC4','unknown value '//trim(YSPLIT)//' for split_variable attribute' )
+        CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Metadata_get_nc4','unknown value '//trim(YSPLIT)//' for split_variable attribute' )
+      END IF
+
+      DEALLOCATE(YSPLIT)
+    END IF
+
+    ISTATUS = NF90_GET_ATT(IFILE_ID,KVAR_ID,'grid',TPREC%NGRID_FILE)
+    !On MesoNH versions < 5.4.0, the grid number was stored in 'GRID' instead of 'grid'
+    IF (ISTATUS /= NF90_NOERR) ISTATUS = NF90_GET_ATT(IFILE_ID,KVAR_ID,'GRID',TPREC%NGRID_FILE)
+    IF (ISTATUS /= NF90_NOERR) TPREC%NGRID_FILE = 0
+
+    ISTATUS = NF90_GET_ATT(IFILE_ID,KVAR_ID,'units',TPREC%CUNITS_FILE)
+    IF (ISTATUS /= NF90_NOERR) TPREC%CUNITS_FILE = ''
+
+    !split_variable and other attributes were added in MesoNH > 5.4.2
+    ISTATUS = NF90_INQUIRE_ATTRIBUTE(IFILE_ID, KVAR_ID, 'split_variable', LEN=ILENG)
+    IF (ISTATUS == NF90_NOERR) THEN
+      IF (GSPLIT_AT_ENTRY) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Metadata_get_nc4','split variable declaration inside a split file')
+
+      ALLOCATE(CHARACTER(LEN=ILENG) :: YSPLIT)
+      ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'split_variable', YSPLIT)
+      IF (istatus /= NF90_NOERR) call IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'split_variable' )
+      IF ( YSPLIT == 'yes' ) then
+        TPREC%LSPLIT = .true.
+
+        ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'ndims', TPREC%NDIMS_FILE)
+        IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'ndims' )
+        IF ( TPREC%NDIMS_FILE/=3 ) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Metadata_get_nc4', &
+                                                  'split variable with ndims/=3 not supported')
+
+        ISTATUS = NF90_INQUIRE_ATTRIBUTE(IFILE_ID, KVAR_ID, 'time_dependent', LEN=ILENG)
+        IF (istatus /= NF90_NOERR) &
+          CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQUIRE_ATTRIBUTE', 'time_dependent' )
+        ALLOCATE(CHARACTER(LEN=ILENG) :: YTIMEDEP)
+        ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'time_dependent', YTIMEDEP)
+        IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'time_dependent' )
+        IF ( YTIMEDEP == 'yes' ) then
+          TPREC%TFIELD%LTIMEDEP = .TRUE.
+        ELSE IF ( YTIMEDEP == 'no' ) THEN
+          TPREC%TFIELD%LTIMEDEP = .FALSE.
+        ELSE
+          CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Metadata_get_nc4','unknown value '//trim(YTIMEDEP)// &
+                                                                  ' for time_dependent attribute' )
+        END IF
+
+        ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'split_nblocks', iblocks)
+        IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'split_nblocks' )
+
+!PW: todo:check tfiles_ioz exist
+        IFILE_ID = TPFILE%TFILES_IOZ(1)%TFILE%NNCID
+
+        istatus = NF90_INQ_VARID(IFILE_ID,trim(TPREC%NAME)//'0001',ivar_id)
+        IF (ISTATUS /= NF90_NOERR) &
+          CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQ_VARID', trim(TPREC%NAME)//'0001' )
+        ISTATUS = NF90_INQUIRE_VARIABLE(IFILE_ID, IVAR_ID, DIMIDS = IDIMS_ID)
+        IF (ISTATUS /= NF90_NOERR) &
+          CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQUIRE_VARIABLE', trim(TPREC%NAME)//'0001' )
+
+        DEALLOCATE(YTIMEDEP)
+      ELSE IF ( YSPLIT /= 'no' ) THEN
+        CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Metadata_get_nc4','unknown value '//trim(YSPLIT)//' for split_variable attribute' )
       END IF
 
       DEALLOCATE(YSPLIT)
@@ -1345,7 +1551,7 @@ END DO
       IF (TPREC%LSPLIT) THEN
         IF(     (.NOT.TPREC%TFIELD%LTIMEDEP .AND.  TPREC%NDIMS_FILE/=2)   &
             .OR. (     TPREC%TFIELD%LTIMEDEP .AND.  TPREC%NDIMS_FILE/=3) ) &
-          CALL PRINT_MSG(NVERB_FATAL,'IO','IO_GET_METADATA_NC4',trim(TPREC%NAME)//': split variables can only be 3D')
+          CALL PRINT_MSG(NVERB_FATAL,'IO','IO_Metadata_get_nc4',trim(TPREC%NAME)//': split variables can only be 3D')
         !Split variables are Z-split
         !Move time dimension to last (4th) position
         IF (TPREC%TFIELD%LTIMEDEP) THEN
@@ -1369,7 +1575,7 @@ END DO
 
           if (TPREC%NGRID_FILE/=0 .and. iblocks/=NKMAX+2*JPVEXT) THEN
             !If size is not as expected, reset its name
-            CALL PRINT_MSG(NVERB_WARNING,'IO','IO_GET_METADATA_NC4',trim(TPREC%NAME)//': strange nblocks size')
+            CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Metadata_get_nc4',trim(TPREC%NAME)//': strange nblocks size')
             TPREC%CDIMNAMES_FILE(3) = 'unknown'
           end if
           TPREC%NDIMSIZES_FILE(3) = iblocks
diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
index 3d37d58583d72d6e1377ac451d1a01c253d243b7..afd62237f12cfe0acf7f3e8eafb9917ed399c10c 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
@@ -818,6 +818,11 @@ CONTAINS
          CALL SECOND_MNH2(T1)
          TIMEZ%T_WRIT3D_SEND=TIMEZ%T_WRIT3D_SEND + T1 - T0
          !
+         ! Write the variable attributes in the non-split file
+         !
+         if ( tpfile%nmaster_rank==isp .and. gnc4 ) &
+           call IO_Write_field_header_split_nc4( tpfile, tpfield, size( pfield, 3 ) )
+         !
          ! write the data
          !
          ALLOCATE(ZSLICE_ll(0,0)) ! to avoid bug on test of size
diff --git a/src/LIB/SURCOUCHE/src/mode_io_file.f90 b/src/LIB/SURCOUCHE/src/mode_io_file.f90
index fc766f55219d6ad3d9e8321af35156acf77878fc..f341a1a62868cb50663100c5d795cbb0f576a7fa 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_file.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_file.f90
@@ -36,6 +36,7 @@
 !  P. Wautelet 01/03/2019: move open/close subroutines to mode_io_file.f90
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
 !  P. Wautelet 12/03/2019: simplify opening of IO split files
+!  P. Wautelet 05/09/2019: disable IO_Coordvar_write_nc4 for Z-split files
 !-----------------------------------------------------------------
 module mode_io_file
 
@@ -580,10 +581,12 @@ SELECT CASE(TPFILE%CTYPE)
       TZFILE_IOZ%NOPEN_CURRENT = 0
       TZFILE_IOZ%NCLOSE        = TZFILE_IOZ%NCLOSE + 1
 #if defined(MNH_IOCDF4)
-      !Write coordinates variables in netCDF file
-      IF (TZFILE_IOZ%CMODE == 'WRITE' .AND. (TZFILE_IOZ%CFORMAT=='NETCDF4' .OR. TZFILE_IOZ%CFORMAT=='LFICDF4')) THEN
-        CALL IO_Coordvar_write_nc4(TZFILE_IOZ,HPROGRAM_ORIG=HPROGRAM_ORIG)
-      END IF
+!Remark: IO_Coordvar_write_nc4 disabled (for the moment) for Z-split files
+!        because it introduce a serialization due to MPI communications inside the call
+!       !Write coordinates variables in netCDF file
+!       IF (TZFILE_IOZ%CMODE == 'WRITE' .AND. (TZFILE_IOZ%CFORMAT=='NETCDF4' .OR. TZFILE_IOZ%CFORMAT=='LFICDF4')) THEN
+!         CALL IO_Coordvar_write_nc4(TZFILE_IOZ,HPROGRAM_ORIG=HPROGRAM_ORIG)
+!       END IF
 #endif
       IF (TZFILE_IOZ%LMASTER) THEN
         if (tzfile_ioz%cformat == 'LFI'     .or. tzfile_ioz%cformat == 'LFICDF4') call IO_File_close_lfi(tzfile_ioz,iresp)
diff --git a/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90
index 746e5746e59b97bb174194ac81d125d22a6f9a1f..5a80880fa4e74e5bcee57266b095c9bead5d8e6e 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90
@@ -16,6 +16,7 @@
 !  P. Wautelet 10/01/2019: replace handle_err by IO_Err_handle_nc4 for better netCDF error messages
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
 !  P. Wautelet 07/03/2019: bugfix: io_set_mnhversion must be called by all the processes
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
 !
 !-----------------------------------------------------------------
 #if defined(MNH_IOCDF4)
diff --git a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90
index 74c69fbcf0a9f2d061d80c7e7d554c61dad7c846..75e142d20f6469336fb3ec89e106d833b43b13aa 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90
@@ -12,6 +12,7 @@
 !  P. Wautelet 21/02/2019: bugfix: intent of read fields: OUT->INOUT to keep initial value if not found in file
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
 !  P. Wautelet 25/06/2019: added IO_Field_read for 3D integer arrays (IO_Field_read_nc4_N3)
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
 !-----------------------------------------------------------------
 #if defined(MNH_IOCDF4)
 module mode_io_read_nc4
@@ -59,9 +60,9 @@ INTEGER,                  INTENT(OUT)   :: KRESP  ! return-code
 CHARACTER(LEN=*),OPTIONAL,INTENT(IN)    :: HCALENDAR
 !
 INTEGER                      :: IERRLEVEL
-INTEGER                      :: ILEN
 INTEGER                      :: IGRID
 INTEGER(KIND=CDFINT)         :: INCID
+INTEGER(KIND=CDFINT)         :: ILEN
 INTEGER(KIND=CDFINT)         :: STATUS
 CHARACTER(LEN=12)            :: YVAL_FILE, YVAL_MEM
 CHARACTER(LEN=:),ALLOCATABLE :: YVALUE
diff --git a/src/LIB/SURCOUCHE/src/mode_io_tools.f90 b/src/LIB/SURCOUCHE/src/mode_io_tools.f90
index b4d2a3d5fd80491940d3e6e0bb281ef086894af0..fb0eb161c7c708bd1df9dd04fe59bafb88b61eb7 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_tools.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_tools.f90
@@ -7,6 +7,8 @@
 !  P. Wautelet 13/12/2018: extracted from mode_io.f90
 !  P. Wautelet 14/12/2018: added IO_Filename_construct
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
+!  P. Wautelet 05/09/2019: io_get_mnhversion: Z-split files: to prevent serialization between files,
+!                          nmnhversion is taken from the main file
 !-----------------------------------------------------------------
 module mode_io_tools
 
@@ -117,70 +119,76 @@ subroutine IO_Mnhversion_get(tpfile)
   if ( trim(tpfile%cmode) /= 'READ' ) &
     call print_msg(NVERB_FATAL,'IO','IO_Mnhversion_get',trim(tpfile%cname)// 'not opened in read mode')
 
-  imnhversion(:) = 0
-  !use tzfield because tfieldlist could be not initialised
-  tzfield%cmnhname   = 'MNHVERSION'
-  tzfield%cstdname   = ''
-  tzfield%clongname  = 'MesoNH version'
-  tzfield%cunits     = ''
-  tzfield%cdir       = '--'
-  tzfield%ccomment   = ''
-  tzfield%ngrid      = 0
-  tzfield%ntype      = TYPEINT
-  tzfield%ndims      = 1
-  tzfield%ltimedep   = .false.
-  call IO_Field_read(tpfile,tzfield,imnhversion,iresp)
-  if (iresp/=0) then
-    tzfield%cmnhname   = 'MASDEV'
-    tzfield%clongname  = 'MesoNH version (without bugfix)'
-    tzfield%ndims      = 0
-    call IO_Field_read(tpfile,tzfield,imasdev,iresp)
+  if ( .not. associated( tpfile%tmainfile ) ) then
+    imnhversion(:) = 0
+    !use tzfield because tfieldlist could be not initialised
+    tzfield%cmnhname   = 'MNHVERSION'
+    tzfield%cstdname   = ''
+    tzfield%clongname  = 'MesoNH version'
+    tzfield%cunits     = ''
+    tzfield%cdir       = '--'
+    tzfield%ccomment   = ''
+    tzfield%ngrid      = 0
+    tzfield%ntype      = TYPEINT
+    tzfield%ndims      = 1
+    tzfield%ltimedep   = .false.
+    call IO_Field_read(tpfile,tzfield,imnhversion,iresp)
     if (iresp/=0) then
-      call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','unknown MASDEV version for '//trim(tpfile%cname))
-    else
-      if (imasdev<100) then
-        imnhversion(1)=imasdev/10
-        imnhversion(2)=mod(imasdev,10)
-      else !for example for mnh 4.10
-        imnhversion(1)=imasdev/100
-        imnhversion(2)=mod(imasdev,100)
+      tzfield%cmnhname   = 'MASDEV'
+      tzfield%clongname  = 'MesoNH version (without bugfix)'
+      tzfield%ndims      = 0
+      call IO_Field_read(tpfile,tzfield,imasdev,iresp)
+      if (iresp/=0) then
+        call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','unknown MASDEV version for '//trim(tpfile%cname))
+      else
+        if (imasdev<100) then
+          imnhversion(1)=imasdev/10
+          imnhversion(2)=mod(imasdev,10)
+        else !for example for mnh 4.10
+          imnhversion(1)=imasdev/100
+          imnhversion(2)=mod(imasdev,100)
+        end if
+      end if
+      !
+      tzfield%cmnhname   = 'BUGFIX'
+      tzfield%clongname  = 'MesoNH bugfix number'
+      call IO_Field_read(tpfile,tzfield,ibugfix,iresp)
+      if (iresp/=0) then
+        call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','unknown BUGFIX version for '//trim(tpfile%cname))
+      else
+        imnhversion(3)=ibugfix
       end if
     end if
     !
-    tzfield%cmnhname   = 'BUGFIX'
-    tzfield%clongname  = 'MesoNH bugfix number'
-    call IO_Field_read(tpfile,tzfield,ibugfix,iresp)
-    if (iresp/=0) then
-      call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','unknown BUGFIX version for '//trim(tpfile%cname))
-    else
-      imnhversion(3)=ibugfix
-    end if
-  end if
-  !
-  write(ymnhversion_file,"( I0,'.',I0,'.',I0 )" ) imnhversion(1),imnhversion(2),imnhversion(3)
-  write(ymnhversion_curr,"( I0,'.',I0,'.',I0 )" ) nmnhversion(1),nmnhversion(2),nmnhversion(3)
-  !
-  if ( imnhversion(1)==0 .and. imnhversion(2)==0 .and. imnhversion(3)==0 ) then
-    call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
-                  ' was written with an unknown version of MesoNH')
-    else if (  imnhversion(1)< nmnhversion(1) .or. &
-            (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)< nmnhversion(2)) .or. &
-            (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)==nmnhversion(2) .and. imnhversion(3)<nmnhversion(3)) ) then
-    call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
-                    ' was written with an older version of MesoNH ('//trim(ymnhversion_file)//&
-                    ' instead of '//trim(ymnhversion_curr)//')')
-    else if (  imnhversion(1)> nmnhversion(1) .or. &
-              (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)> nmnhversion(2)) .or. &
-              (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)==nmnhversion(2) .and. imnhversion(3)>nmnhversion(3)) ) then
-      call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
-                    ' was written with a more recent version of MesoNH ('//trim(ymnhversion_file)//&
-                    ' instead of '//trim(ymnhversion_curr)//')')
-    else
-      call print_msg(NVERB_DEBUG,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
-                    ' was written with the same version of MesoNH ('//trim(ymnhversion_curr)//')')
-    end if
+    write(ymnhversion_file,"( I0,'.',I0,'.',I0 )" ) imnhversion(1),imnhversion(2),imnhversion(3)
+    write(ymnhversion_curr,"( I0,'.',I0,'.',I0 )" ) nmnhversion(1),nmnhversion(2),nmnhversion(3)
     !
-    tpfile%nmnhversion(:) = imnhversion(:)
+    if ( imnhversion(1)==0 .and. imnhversion(2)==0 .and. imnhversion(3)==0 ) then
+      call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
+                    ' was written with an unknown version of MesoNH')
+      else if (  imnhversion(1)< nmnhversion(1) .or. &
+              (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)< nmnhversion(2)) .or. &
+              (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)==nmnhversion(2) .and. imnhversion(3)<nmnhversion(3)) ) then
+      call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
+                      ' was written with an older version of MesoNH ('//trim(ymnhversion_file)//&
+                      ' instead of '//trim(ymnhversion_curr)//')')
+      else if (  imnhversion(1)> nmnhversion(1) .or. &
+                (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)> nmnhversion(2)) .or. &
+                (imnhversion(1)==nmnhversion(1) .and. imnhversion(2)==nmnhversion(2) .and. imnhversion(3)>nmnhversion(3)) ) then
+        call print_msg(NVERB_WARNING,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
+                      ' was written with a more recent version of MesoNH ('//trim(ymnhversion_file)//&
+                      ' instead of '//trim(ymnhversion_curr)//')')
+      else
+        call print_msg(NVERB_DEBUG,'IO','IO_Mnhversion_get','file '//trim(tpfile%cname)//&
+                      ' was written with the same version of MesoNH ('//trim(ymnhversion_curr)//')')
+      end if
+      !
+      tpfile%nmnhversion(:) = imnhversion(:)
+  else ! associated( tpfile%tmainfile )
+    if ( .not. tpfile%tmainfile%lopened ) &
+      call Print_msg( NVERB_FATAL, 'IO', 'IO_Mnhversion_get', 'tmainfile should be opened' )
+    tpfile%nmnhversion(:) = tpfile%tmainfile%nmnhversion(:)
+  end if
 end subroutine IO_Mnhversion_get
 
 
diff --git a/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90
index 21734960714a0e90b1f0376525c179b08705d1a0..2be340eafd509639e7f2385f1c2f05f543e666ab 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90
@@ -10,6 +10,7 @@
 !  P. Wautelet 13/12/2018: split of mode_netcdf into multiple modules/files
 !  P. Wautelet 10/01/2019: replace handle_err by IO_Err_handle_nc4 for better netCDF error messages
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
 !-----------------------------------------------------------------
 #if defined(MNH_IOCDF4)
 module mode_io_tools_nc4
@@ -78,7 +79,7 @@ TYPE(DIMCDF),DIMENSION(:),            INTENT(OUT) :: TPDIMS
 INTEGER,                              INTENT(OUT) :: KRESP
 !
 INTEGER               :: IGRID
-INTEGER               :: ILEN, ISIZE
+INTEGER(kind=CDFINT)  :: ILEN, ISIZE
 INTEGER               :: JI
 CHARACTER(LEN=32)     :: YINT
 CHARACTER(LEN=2)      :: YDIR
@@ -112,7 +113,7 @@ IF (IGRID==0) THEN
         ILEN = 1
       END IF
     CASE (1)
-      PTDIM => IO_Dimcdf_get_nc4(TPFILE,KLEN)
+      PTDIM => IO_Dimcdf_get_nc4(TPFILE, int( KLEN, kind=CDFINT ) )
       TPDIMS(1) = PTDIM
       ILEN      = PTDIM%LEN
     CASE DEFAULT
@@ -165,7 +166,7 @@ ELSE
       ELSE IF ( YDIR == 'ZZ' ) THEN
         PTDIM => TPFILE%TNCCOORDS(3,IGRID)%TDIM
       ELSE IF (JI==TPFIELD%NDIMS) THEN !Guess last dimension
-        PTDIM => IO_Dimcdf_get_nc4(TPFILE, KLEN)
+        PTDIM => IO_Dimcdf_get_nc4(TPFILE, int( KLEN, kind=CDFINT ) )
       END IF
       ILEN       = PTDIM%LEN
       TPDIMS(JI) = PTDIM
@@ -263,16 +264,16 @@ IIU_ll = NIMAX_ll + 2*JPHEXT
 IJU_ll = NJMAX_ll + 2*JPHEXT
 IKU    = NKMAX    + 2*JPVEXT
 
-IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI))      PIOCDF%DIM_NI      => IO_Dimcdf_get_nc4(TPFILE, IIU_ll, 'ni')
-IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ))      PIOCDF%DIM_NJ      => IO_Dimcdf_get_nc4(TPFILE, IJU_ll, 'nj')
-IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI_U))    PIOCDF%DIM_NI_U    => IO_Dimcdf_get_nc4(TPFILE, IIU_ll, 'ni_u')
-IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ_U))    PIOCDF%DIM_NJ_U    => IO_Dimcdf_get_nc4(TPFILE, IJU_ll, 'nj_u')
-IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI_V))    PIOCDF%DIM_NI_V    => IO_Dimcdf_get_nc4(TPFILE, IIU_ll, 'ni_v')
-IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ_V))    PIOCDF%DIM_NJ_V    => IO_Dimcdf_get_nc4(TPFILE, IJU_ll, 'nj_v')
+IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI))      PIOCDF%DIM_NI      => IO_Dimcdf_get_nc4(TPFILE, int( IIU_ll, kind=CDFINT ), 'ni')
+IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ))      PIOCDF%DIM_NJ      => IO_Dimcdf_get_nc4(TPFILE, int( IJU_ll, kind=CDFINT ), 'nj')
+IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI_U))    PIOCDF%DIM_NI_U    => IO_Dimcdf_get_nc4(TPFILE, int( IIU_ll, kind=CDFINT ), 'ni_u')
+IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ_U))    PIOCDF%DIM_NJ_U    => IO_Dimcdf_get_nc4(TPFILE, int( IJU_ll, kind=CDFINT ), 'nj_u')
+IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI_V))    PIOCDF%DIM_NI_V    => IO_Dimcdf_get_nc4(TPFILE, int( IIU_ll, kind=CDFINT ), 'ni_v')
+IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ_V))    PIOCDF%DIM_NJ_V    => IO_Dimcdf_get_nc4(TPFILE, int( IJU_ll, kind=CDFINT ), 'nj_v')
 IF (TRIM(YPROGRAM)/='PGD' .AND. TRIM(YPROGRAM)/='NESPGD' .AND. TRIM(YPROGRAM)/='ZOOMPG' &
     .AND. .NOT.(TRIM(YPROGRAM)=='REAL' .AND. CSTORAGE_TYPE=='SU') ) THEN !condition to detect PREP_SURFEX
-  IF (.NOT. ASSOCIATED(PIOCDF%DIM_LEVEL))   PIOCDF%DIM_LEVEL   => IO_Dimcdf_get_nc4(TPFILE, IKU   , 'level')
-  IF (.NOT. ASSOCIATED(PIOCDF%DIM_LEVEL_W)) PIOCDF%DIM_LEVEL_W => IO_Dimcdf_get_nc4(TPFILE, IKU   , 'level_w')
+  IF (.NOT. ASSOCIATED(PIOCDF%DIM_LEVEL))   PIOCDF%DIM_LEVEL   => IO_Dimcdf_get_nc4(TPFILE, int( IKU, kind=CDFINT ), 'level')
+  IF (.NOT. ASSOCIATED(PIOCDF%DIM_LEVEL_W)) PIOCDF%DIM_LEVEL_W => IO_Dimcdf_get_nc4(TPFILE, int( IKU, kind=CDFINT ), 'level_w')
   IF (.NOT. ASSOCIATED(PIOCDF%DIMTIME)) PIOCDF%DIMTIME => IO_Dimcdf_get_nc4(TPFILE, NF90_UNLIMITED, 'time')
 ELSE
   !PGD and SURFEX files for MesoNH have no vertical levels or time scale
diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
index aff7f36a2a0f708223db3bca817a6bd02b0e33c2..34eebc5adef4e993658ae2cbc7dcd0f27b164250 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
@@ -12,6 +12,8 @@
 !  P. Wautelet 11/01/2019: NVERB_INFO->NVERB_WARNING for zero size fields
 !  P. Wautelet 01/02/2019: IO_Coordvar_write_nc4: bug: use of non-associated pointers (PIOCDF%DIM_Nx_y)
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
+!  P. Wautelet 19/09/2019: temporary workaround for netCDF bug if MNH_INT=8 (if netCDF fortran < 4.4.5)
 !-----------------------------------------------------------------
 #if defined(MNH_IOCDF4)
 module mode_io_write_nc4
@@ -286,10 +288,14 @@ IF(TPFIELD%NTYPE==TYPEINT .AND. TPFIELD%NDIMS>0) THEN
   ! Remarks: * the attribute '_FillValue' is also recognized by the netCDF library
   !            and is used when pre-filling a variable
   !          * it cannot be modified if some data has already been written (->check OEXISTED)
+#if ( MNH_INT == 4 )
+!BUG: NF90_PUT_ATT does not work for NF90_INT64 and _FillValue attribute if netCDF-fortran version < 4.4.5 (bug in netCDF)
+!     (see https://github.com/Unidata/netcdf-fortran/issues/62)
   IF(.NOT.OEXISTED) THEN
     STATUS = NF90_PUT_ATT(INCID, KVARID,'_FillValue', TPFIELD%NFILLVALUE)
     IF (STATUS /= NF90_NOERR) CALL IO_Err_handle_nc4(status,'IO_Field_attr_write_nc4','NF90_PUT_ATT','_FillValue')
   END IF
+#endif
   !
   ! Valid_min/max (CF/COMODO convention)
   STATUS = NF90_PUT_ATT(INCID, KVARID,'valid_min', TPFIELD%NVALIDMIN)
@@ -2009,6 +2015,7 @@ INTEGER,PARAMETER :: YEAR=1, MONTH=2, DAY=3, HH=5, MM=6, SS=7
 CHARACTER(len=5)             :: YZONE
 CHARACTER(LEN=:),ALLOCATABLE :: YCMD, YHISTORY, YHISTORY_NEW, YHISTORY_PREV
 INTEGER                      :: ILEN_CMD, ILEN_PREV
+INTEGER(KIND=CDFINT)         :: ILEN_NC
 INTEGER(KIND=CDFINT)         :: ISTATUS
 INTEGER,DIMENSION(8)         :: IDATETIME
 !
@@ -2018,7 +2025,8 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_History_append_nc4','called for file '//TRIM
 !
 IF (TPFILE%LMASTER)  THEN
   !Check if history attribute already exists in file and read it
-  ISTATUS = NF90_INQUIRE_ATTRIBUTE(TPFILE%NNCID, NF90_GLOBAL, 'history', LEN=ILEN_PREV)
+  ISTATUS = NF90_INQUIRE_ATTRIBUTE(TPFILE%NNCID, NF90_GLOBAL, 'history', LEN=ILEN_NC)
+  ILEN_PREV = int( ILEN_NC, kind=kind(ILEN_PREV) )
   IF (ISTATUS == NF90_NOERR) THEN
     ALLOCATE(CHARACTER(LEN=ILEN_PREV) :: YHISTORY_PREV)
     ISTATUS = NF90_GET_ATT(TPFILE%NNCID, NF90_GLOBAL, 'history', YHISTORY_PREV)
diff --git a/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 b/src/LIB/SURCOUCHE/src/mode_mnh_world.f90
index 67ef014021be97382819f8df9f4d05f06ab1329a..b10e2eea94b404e947df4e57f4a9c5ac5240c8b4 100644
--- a/src/LIB/SURCOUCHE/src/mode_mnh_world.f90
+++ b/src/LIB/SURCOUCHE/src/mode_mnh_world.f90
@@ -3,13 +3,12 @@
 !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 3/12/2014 : typo form -> from
-!!  Philippe 03/10/2017: set IP and NPROC in INIT_NMNH_COMM_WORLD
-!!  Philippe Wautelet: 10/01/2019: use NEWUNIT argument of OPEN
-!!
+! Modifications:
+!  J. Escobar  03/12/2014: typo form -> from
+!  P. Wautelet 03/10/2017: set IP and NPROC in INIT_NMNH_COMM_WORLD
+!  P. Wautelet 10/01/2019: use NEWUNIT argument of OPEN
+!  P. Wautelet 21/11/2019: bugfix: close call could be done on a non-opened file
+!-----------------------------------------------------------------
 MODULE MODE_MNH_WORLD
   IMPLICIT NONE
   CHARACTER(len=*), parameter   :: conf_mnh_world="conf_mnh_world.nam"
@@ -69,8 +68,8 @@ CONTAINS
           IF (IERR.EQ.0) THEN
              READ(unit=ilu,NML=NAM_CONF_MNH_WORLD)
              WRITE(*,NAM_CONF_MNH_WORLD)
+             CLOSE(unit=ILU)
           ENDIF
-          CLOSE(unit=ILU)
        ENDIF
        iroot = 0
        ! Brodcast mapping
diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90
index 8afdb41aefd43f6996f8a5c7a00afc6665930c81..55b5db9c4bf12ca54f13e17b2b6cdec2357bd3db 100644
--- a/src/MNH/flash_geom_elec.f90
+++ b/src/MNH/flash_geom_elec.f90
@@ -100,6 +100,7 @@ END MODULE MODI_FLASH_GEOM_ELEC_n
 !  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
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
 !-------------------------------------------------------------------------------
 !
 !*      0.      DECLARATIONS
diff --git a/src/MNH/ground_paramn.f90 b/src/MNH/ground_paramn.f90
index 8dff6ecf1f14745011b8847db13127b708aea57a..5f82142249a0613864b7cbf2feabde6638a214a6 100644
--- a/src/MNH/ground_paramn.f90
+++ b/src/MNH/ground_paramn.f90
@@ -746,16 +746,16 @@ PSFCO2(:,:) = ZSFCO2(:,:) / XRHODREF(:,:,IKB)
 !
 IF (LDIAG_IN_RUN) THEN
   !
+  XCURRENT_SFCO2(:,:) = ZSFCO2(:,:)
+  XCURRENT_DSTAOD(:,:)=0.0
+  XCURRENT_SLTAOD(:,:)=0.0
+  IF (CRAD=='ECMW') THEN
   XCURRENT_LWD  (:,:) = XFLALWD(:,:)
   XCURRENT_SWD  (:,:) = SUM(XDIRSRFSWD(:,:,:)+XSCAFLASWD(:,:,:),DIM=3)
   XCURRENT_LWU  (:,:) = XLWU(:,:,IKB) 
   XCURRENT_SWU  (:,:) = XSWU(:,:,IKB) 
   XCURRENT_SWDIR(:,:) = SUM(XDIRSRFSWD,DIM=3)
   XCURRENT_SWDIFF(:,:) = SUM(XSCAFLASWD(:,:,:),DIM=3) 
-  XCURRENT_SFCO2(:,:) = ZSFCO2(:,:)
-  XCURRENT_DSTAOD(:,:)=0.0
-  XCURRENT_SLTAOD(:,:)=0.0
-  IF (CRAD=='ECMW') THEN
   DO JK=IKB,IKE
     IKRAD = JK - 1 
     DO JJ=IJB,IJE
diff --git a/src/MNH/ini_cpl.f90 b/src/MNH/ini_cpl.f90
index b1ef0fa5227f135a57e4ecc88faa0b7b6d47a1f5..0646747bacba903a0b9d57db46473508237d4a84 100644
--- a/src/MNH/ini_cpl.f90
+++ b/src/MNH/ini_cpl.f90
@@ -213,6 +213,8 @@ END MODULE MODI_INI_CPL
 !!  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
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!!      Q.Rodier 09/2019 add missing abort if coupling files date not ordered 
+!!                       or before date of the segment 
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -372,6 +374,7 @@ DO JCI=1,NCPL_NBR
     YTITLE='CURRENT DATE AND TIME OF THE FILE'//YCI
     CALL SM_PRINT_TIME(TDTCPL(JCI),TLUOUT,YTITLE)
     GSKIP(JCI)=.TRUE.      ! flag to skip after this coupling file
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_CPL','')      
   ELSE
     NCPL_TIMES(JCI,1) = NINT( ZDIST / PTSTEP ) + 2
   END IF
@@ -388,7 +391,8 @@ DO JCI=1,NCPL_NBR
       WRITE(YCI,'(I2.0)') JCI-1        
       YTITLE='CURRENT DATE AND TIME OF THE FILE'//YCI
       CALL SM_PRINT_TIME(TDTCPL(JCI-1),TLUOUT,YTITLE)
-      GEND=.TRUE.           ! error flag set to true   
+      GEND=.TRUE.           ! error flag set to true
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_CPL','')      
     END IF
   !   
   END IF
diff --git a/src/MNH/ini_surfstationn.f90 b/src/MNH/ini_surfstationn.f90
index 3d8f085963fea14de3ebad7877b4d984f42e2f2c..0c099b7fbd6bcd5ae0243e75412d060eb4bfdbeb 100644
--- a/src/MNH/ini_surfstationn.f90
+++ b/src/MNH/ini_surfstationn.f90
@@ -191,6 +191,8 @@ ALLOCATE(TSTATION%GFLUX   (ISTORE,NUMBSTAT))
 ALLOCATE(TSTATION%LEI     (ISTORE,NUMBSTAT))
 ALLOCATE(TSTATION%SWD     (ISTORE,NUMBSTAT))
 ALLOCATE(TSTATION%SWU     (ISTORE,NUMBSTAT))
+ALLOCATE(TSTATION%SWDIR   (ISTORE,NUMBSTAT))
+ALLOCATE(TSTATION%SWDIFF  (ISTORE,NUMBSTAT))
 ALLOCATE(TSTATION%LWD     (ISTORE,NUMBSTAT))
 ALLOCATE(TSTATION%LWU     (ISTORE,NUMBSTAT))
 ALLOCATE(TSTATION%DSTAOD  (ISTORE,NUMBSTAT))
@@ -220,6 +222,8 @@ TSTATION%GFLUX   = XUNDEF
 TSTATION%LEI     = XUNDEF
 TSTATION%SWD     = XUNDEF
 TSTATION%SWU     = XUNDEF
+TSTATION%SWDIR   = XUNDEF
+TSTATION%SWDIFF  = XUNDEF
 TSTATION%LWD     = XUNDEF
 TSTATION%LWU     = XUNDEF
 TSTATION%DSTAOD  = XUNDEF
diff --git a/src/MNH/modd_sub_modeln.f90 b/src/MNH/modd_sub_modeln.f90
index 326de827d4e9ad98b76d86c68b05b290806bfd80..5f08f0b0258c454e3cd8859f056519ef024d4945 100644
--- a/src/MNH/modd_sub_modeln.f90
+++ b/src/MNH/modd_sub_modeln.f90
@@ -50,7 +50,7 @@ TYPE SUB_MODEL_t
   REAL(kind=MNHTIME), DIMENSION(2) :: XT_TURB, XT_2WAY, XT_SHADOWS
   REAL(kind=MNHTIME), DIMENSION(2) :: XT_FORCING, XT_NUDGING, XT_CHEM
 
-  REAL, DIMENSION(:,:,:), POINTER :: ZWT_ACT_NUC=>NULL()
+  REAL, DIMENSION(:,:,:), POINTER :: XWT_ACT_NUC=>NULL()
                              ! Vertical motion used for ACTivation/NUCleation
   LOGICAL, DIMENSION(:,:), POINTER :: GMASKkids=>NULL() ! kids domains mask
 
@@ -79,7 +79,7 @@ REAL(kind=MNHTIME), DIMENSION(:), POINTER :: XT_COUPL=>NULL(), XT_1WAY=>NULL(),
 REAL(kind=MNHTIME), DIMENSION(:), POINTER :: XT_RAD=>NULL(), XT_DCONV=>NULL(), XT_GROUND=>NULL(), XT_MAFL=>NULL()
 REAL(kind=MNHTIME), DIMENSION(:), POINTER :: XT_TURB=>NULL(), XT_2WAY=>NULL(), XT_TRACER=>NULL()
 REAL(kind=MNHTIME), DIMENSION(:), POINTER :: XT_FORCING=>NULL(), XT_NUDGING=>NULL(), XT_CHEM=>NULL()
-REAL, DIMENSION(:,:,:), POINTER :: ZWT_ACT_NUC=>NULL()
+REAL, DIMENSION(:,:,:), POINTER :: XWT_ACT_NUC=>NULL()
 LOGICAL, DIMENSION(:,:), POINTER :: GMASKkids=>NULL()
 LOGICAL, POINTER :: GCLOSE_OUT=>NULL()
 
@@ -101,7 +101,7 @@ SUB_MODEL_MODEL(KFROM)%TLSHALO2_ll=>TLSHALO2_ll
 SUB_MODEL_MODEL(KFROM)%THALO2T_ll=>THALO2T_ll
 SUB_MODEL_MODEL(KFROM)%THALO2MT_ll=>THALO2MT_ll
 SUB_MODEL_MODEL(KFROM)%THALO2SC_ll=>THALO2SC_ll
-SUB_MODEL_MODEL(KFROM)%ZWT_ACT_NUC=>ZWT_ACT_NUC
+SUB_MODEL_MODEL(KFROM)%XWT_ACT_NUC=>XWT_ACT_NUC
 SUB_MODEL_MODEL(KFROM)%GMASKkids=>GMASKkids  
 !
 ! Current model is set to model KTO
@@ -154,7 +154,7 @@ XT_SHADOWS=>SUB_MODEL_MODEL(KTO)%XT_SHADOWS
 XT_FORCING=>SUB_MODEL_MODEL(KTO)%XT_FORCING
 XT_NUDGING=>SUB_MODEL_MODEL(KTO)%XT_NUDGING
 XT_CHEM=>SUB_MODEL_MODEL(KTO)%XT_CHEM
-ZWT_ACT_NUC=>SUB_MODEL_MODEL(KTO)%ZWT_ACT_NUC
+XWT_ACT_NUC=>SUB_MODEL_MODEL(KTO)%XWT_ACT_NUC
 GMASKkids=>SUB_MODEL_MODEL(KTO)%GMASKkids  
 GCLOSE_OUT=>SUB_MODEL_MODEL(KTO)%GCLOSE_OUT
 
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 3608bf11b5777a9bbe63251cb778b0983fcff5e9..9891704116ea8edbdd1ae21ad5525f0977e7da26 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -264,6 +264,7 @@ END MODULE MODI_MODEL_n
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
 !  J. Escobar  09/07/2019: norme Doctor -> Rename Module Type variable TZ -> T
 !  J. Escobar  09/07/2019: for bug in management of XLSZWSM variable, add/use specific 2D TLSFIELD2D_ll pointer
+!  J. Escobar  27/09/2019: add missing report timing of RESOLVED_ELEC       
 !!-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -598,7 +599,7 @@ IF (KTCOUNT == 1) THEN
   NULLIFY(TLSHALO2_ll)
   NULLIFY(TFIELDSC_ll)
 !
-  ALLOCATE(ZWT_ACT_NUC(SIZE(XWT,1),SIZE(XWT,2),SIZE(XWT,3)))
+  ALLOCATE(XWT_ACT_NUC(SIZE(XWT,1),SIZE(XWT,2),SIZE(XWT,3)))
   ALLOCATE(GMASKkids(SIZE(XWT,1),SIZE(XWT,2)))
 !
 ! initialization of the FM file backup/output number
@@ -1734,19 +1735,19 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
   IF (CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO' .OR. CCLOUD == 'C3R5' &
                                              .OR. CCLOUD == "LIMA" ) THEN
     IF ( LFORCING ) THEN
-      ZWT_ACT_NUC(:,:,:) = XWT(:,:,:) + XWTFRC(:,:,:)
+      XWT_ACT_NUC(:,:,:) = XWT(:,:,:) + XWTFRC(:,:,:)
     ELSE
-      ZWT_ACT_NUC(:,:,:) = XWT(:,:,:)
+      XWT_ACT_NUC(:,:,:) = XWT(:,:,:)
     END IF
     IF (CTURB /= 'NONE' ) THEN
      IF ( ((CCLOUD=='C2R2'.OR.CCLOUD=='KHKO').AND.LACTTKE) .OR. (CCLOUD=='LIMA'.AND.MACTTKE) ) THEN 
-       ZWT_ACT_NUC(:,:,:) = ZWT_ACT_NUC(:,:,:) +  (2./3. * XTKET(:,:,:))**0.5
+       XWT_ACT_NUC(:,:,:) = XWT_ACT_NUC(:,:,:) +  (2./3. * XTKET(:,:,:))**0.5
      ELSE
-       ZWT_ACT_NUC(:,:,:) = ZWT_ACT_NUC(:,:,:) 
+       XWT_ACT_NUC(:,:,:) = XWT_ACT_NUC(:,:,:) 
      ENDIF
     ENDIF
   ELSE
-    ZWT_ACT_NUC(:,:,:) = 0.
+    XWT_ACT_NUC(:,:,:) = 0.
   END IF
 !
   XRTHS_CLD  = XRTHS
@@ -1764,7 +1765,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
                           GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,XTSTEP,    &
                           XZZ, XRHODJ, XRHODREF, XEXNREF,                      &
                           ZPABST, XTHT,XRT,XSIGS,VSIGQSAT,XMFCONV,XTHM,XRCM,   &
-                          XPABSM, ZWT_ACT_NUC,XDTHRAD, XRTHS, XRRS,            &
+                          XPABSM, XWT_ACT_NUC,XDTHRAD, XRTHS, XRRS,            &
                           XSVT, XRSVS,                                         &
                           XSRCT, XCLDFR,XCIT,                                  &
                           LSEDIC,KACTIT, KSEDC, KSEDI, KRAIN, KWARM, KHHONI,   &
@@ -1782,7 +1783,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
                           GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,           &
                           XTSTEP,XZZ, XRHODJ, XRHODREF, XEXNREF,               &
                           ZPABST, XTHT,XRT,XSIGS,VSIGQSAT,XMFCONV,XTHM,XRCM,   &
-                          XPABSM, ZWT_ACT_NUC,XDTHRAD, XRTHS, XRRS,            &
+                          XPABSM, XWT_ACT_NUC,XDTHRAD, XRTHS, XRRS,            &
                           XSVT, XRSVS,                                         &
                           XSRCT, XCLDFR,XCIT,                                  &
                           LSEDIC,KACTIT, KSEDC, KSEDI, KRAIN, KWARM, KHHONI,   &
@@ -1842,7 +1843,7 @@ XTIME_BU_PROCESS = 0.
 XTIME_LES_BU_PROCESS = 0.
 !
 IF (CELEC /= 'NONE' .AND. (CCLOUD(1:3) == 'ICE')) THEN
-  ZWT_ACT_NUC(:,:,:) = 0.
+  XWT_ACT_NUC(:,:,:) = 0.
 !
   XRTHS_CLD = XRTHS
   XRRS_CLD  = XRRS
@@ -2145,6 +2146,7 @@ IF (OEXIT) THEN
     CALL TIME_STAT_ll(TIMEZ%T_MAP_SX_YP2_ZP1_B,ZTOT,          '   REMAP FFTXZ-1=>B     ' ,'-','F')
   ! JUAN P1/P2
   CALL TIME_STAT_ll(XT_CLOUD,ZTOT,      ' RESOLVED_CLOUD','=')
+  CALL TIME_STAT_ll(XT_ELEC,ZTOT,      ' RESOLVED_ELEC','=')
   CALL TIME_STAT_ll(XT_HALO,ZTOT,       ' EXCHANGE_HALO','=')
   CALL TIME_STAT_ll(XT_STEP_SWA,ZTOT,   ' ENDSTEP','=')
   CALL TIME_STAT_ll(XT_STEP_BUD,ZTOT,   ' BUDGETS','=')
@@ -2157,8 +2159,8 @@ IF (OEXIT) THEN
            XT_ADV  + XT_FORCING + XT_NUDGING + XT_SOURCES  +  XT_DIFF   + &
            XT_ADVUVW  + XT_GRAV +                                         &
            XT_RELAX+ XT_PARAM   + XT_COUPL   + XT_RAD_BOUND+XT_PRESS    + &
-           XT_CLOUD+  XT_HALO   + XT_SPECTRA + XT_STEP_SWA +XT_STEP_MISC+ &
-           XT_STEP_BUD
+           XT_CLOUD+ XT_ELEC    + XT_HALO    + XT_SPECTRA + XT_STEP_SWA + &
+           XT_STEP_MISC+ XT_STEP_BUD
   CALL TIME_STAT_ll(ZALL,ZTOT,          ' SUM(CALL)','=')
   CALL  TIMING_SEPARATOR('=')
   !
diff --git a/src/MNH/paspol.f90 b/src/MNH/paspol.f90
index 3bdc1e191584b6d285e58cc196337271d0ccebe2..1a2146b66e5f3b71efebaed0305508bf6888b345 100644
--- a/src/MNH/paspol.f90
+++ b/src/MNH/paspol.f90
@@ -61,6 +61,7 @@ END MODULE MODI_PASPOL
 !!    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
+!  Q. Rodier      09/2019: correction for the emission if restart
 ! --------------------------------------------------------------------------
 !       
 !!    EXTERNAL
@@ -528,7 +529,7 @@ DO JSV=1,NSV_PP
 
             !
             !
-            IF (.NOT.GBEGEMIS(JSV)) THEN
+            IF (.NOT.GBEGEMIS(JSV) .AND. CCONF=='START') THEN
                XRSVS(:,:,:,IP) =  XRSVS(:,:,:,IP) &
                                  +XRHODJ(:,:,:)*XSVT(:,:,:,IP)/PTSTEP
                GBEGEMIS(JSV)= .TRUE.
diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90
index bedad9ddef9e7eac9f877bc31387c3100c1ef29e..802fa044c109bacd947149d054a572142a021f8e 100644
--- a/src/MNH/phys_paramn.f90
+++ b/src/MNH/phys_paramn.f90
@@ -235,6 +235,7 @@ END MODULE MODI_PHYS_PARAM_n
 !  P. Wautelet 28/03/2019: use MNHTIME for time measurement variables
 !  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
+!  P. Wautelet 21/11/2019: ZRG_HOUR and ZRAT_HOUR are now parameter arrays
 !!-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -379,19 +380,19 @@ REAL, DIMENSION(:,:,:,:), ALLOCATABLE  :: ZSVT
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZEXN   ! Atmospheric density and Exner
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZSIGMF   ! MF contribution to XSIGS
 !
-REAL, DIMENSION(0:24) :: ZRG_HOUR =  (/ 0., 0., 0., 0., 0., 32.04, 114.19,  &
-                                      228.01, 351.25, 465.49, 557.24,       &
-                                      616.82, 638.33, 619.43, 566.56,       &
-                                      474.71, 359.20, 230.87, 115.72,       &
-                                      32.48, 0., 0., 0., 0., 0. /)
-!
-REAL, DIMENSION(0:24) :: ZRAT_HOUR = (/ 326.00, 325.93, 325.12, 324.41,     &
-                                      323.16, 321.95, 322.51, 325.16,       &
-                                      328.01, 331.46, 335.58, 340.00,       &
-                                      345.20, 350.32, 354.20, 356.58,       &
-                                      356.56, 355.33, 352.79, 351.34,       &
-                                      347.00, 342.00, 337.00, 332.00,       &
-                                      326.00     /)
+REAL, DIMENSION(0:24), parameter :: ZRG_HOUR =  (/ 0., 0., 0., 0., 0., 32.04, 114.19, &
+                                                   228.01, 351.25, 465.49, 557.24,    &
+                                                   616.82, 638.33, 619.43, 566.56,    &
+                                                   474.71, 359.20, 230.87, 115.72,    &
+                                                   32.48, 0., 0., 0., 0., 0. /)
+!
+REAL, DIMENSION(0:24), parameter :: ZRAT_HOUR = (/ 326.00, 325.93, 325.12, 324.41, &
+                                                   323.16, 321.95, 322.51, 325.16, &
+                                                   328.01, 331.46, 335.58, 340.00, &
+                                                   345.20, 350.32, 354.20, 356.58, &
+                                                   356.56, 355.33, 352.79, 351.34, &
+                                                   347.00, 342.00, 337.00, 332.00, &
+                                                   326.00     /)
 !
 !
 character(len=6) :: ynum
diff --git a/src/MNH/profilern.f90 b/src/MNH/profilern.f90
index a463a4ad712b60b1a0dfabcc444ed12fe91e4b55..5dd11eb7cd32600a396f73ede6404a4a511a52c3 100644
--- a/src/MNH/profilern.f90
+++ b/src/MNH/profilern.f90
@@ -115,7 +115,7 @@ USE MODI_RADAR_RAIN_ICE
 USE MODI_LIDAR
 USE MODI_WATER_SUM
 USE MODI_GPS_ZENITH_GRID
-USE MODD_PARAM_n, ONLY : CCLOUD
+USE MODD_PARAM_n, ONLY : CCLOUD,CRAD
 !
 !
 IMPLICIT NONE
@@ -538,10 +538,12 @@ IF (GSTORE) THEN
         TPROFILER%LE    (IN,I)     = PROFILER_INTERP_2D(XCURRENT_LE    )
         TPROFILER%LEI   (IN,I)     = PROFILER_INTERP_2D(XCURRENT_LEI   )        
         TPROFILER%GFLUX (IN,I)     = PROFILER_INTERP_2D(XCURRENT_GFLUX )
+       IF (CRAD /= 'NONE') THEN
         TPROFILER%SWD   (IN,I)     = PROFILER_INTERP_2D(XCURRENT_SWD   )
         TPROFILER%SWU   (IN,I)     = PROFILER_INTERP_2D(XCURRENT_SWU   )
         TPROFILER%LWD   (IN,I)     = PROFILER_INTERP_2D(XCURRENT_LWD   )
         TPROFILER%LWU   (IN,I)     = PROFILER_INTERP_2D(XCURRENT_LWU   )
+       END IF
         TPROFILER%TKE_DISS(IN,:,I) = PROFILER_INTERP(XCURRENT_TKE_DISS)
       ENDIF
     ENDIF
@@ -570,10 +572,12 @@ IF (GSTORE) THEN
     CALL DISTRIBUTE_PROFILER(TPROFILER%LE    (IN,I))
     CALL DISTRIBUTE_PROFILER(TPROFILER%LEI   (IN,I))
     CALL DISTRIBUTE_PROFILER(TPROFILER%GFLUX (IN,I))
+   IF (CRAD /= 'NONE') THEN
     CALL DISTRIBUTE_PROFILER(TPROFILER%LWD   (IN,I))
     CALL DISTRIBUTE_PROFILER(TPROFILER%LWU   (IN,I))
     CALL DISTRIBUTE_PROFILER(TPROFILER%SWD   (IN,I))
     CALL DISTRIBUTE_PROFILER(TPROFILER%SWU   (IN,I))
+   ENDIF
   ENDIF
  DO JK=1,IKU
   CALL DISTRIBUTE_PROFILER(TPROFILER%ZON (IN,JK,I))
diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90
index 23d5a06c51b12c89c3b16d9c55cd4ed8c6ced3ac..2db97b874fe104915f2b3655a456b9e734f3a40d 100644
--- a/src/MNH/rain_ice.f90
+++ b/src/MNH/rain_ice.f90
@@ -905,7 +905,7 @@ IF( IMICRO >= 0 ) THEN
   DEALLOCATE(ZPRES)
   DEALLOCATE(ZRHODREF)
   DEALLOCATE(ZZT)
-  DEALLOCATE(ZRHODJ)
+  IF(LBU_ENABLE .OR. LLES_CALL .OR. LCHECK ) DEALLOCATE(ZRHODJ)
   DEALLOCATE(ZTHS)
   DEALLOCATE(ZTHT)
   DEALLOCATE(ZTHLT)
diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90
index 6ff7014b90c5d416e45fa2a60cda6fe5b8aaf16e..a8178a0be6fb189500b2977c055ecec45d8db4fe 100644
--- a/src/MNH/read_all_data_grib_case.f90
+++ b/src/MNH/read_all_data_grib_case.f90
@@ -131,6 +131,7 @@ END MODULE MODI_READ_ALL_DATA_GRIB_CASE
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
 !  P. Wautelet 14/03/2019: correct ZWS when variable not present in file
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  Q. Rodier   16/09/2019: switch of GRIB number ID for Orograpgy in ARPEGE/AROME in EPyGrAM 
 !-------------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -516,7 +517,7 @@ SELECT CASE (IMODEL)
          WRITE (ILUOUT0,'(A)')'Orography is missing - abort'
        ENDIF 
   CASE(6,7) !  arpege and arome GRIB2
-      CALL SEARCH_FIELD(IGRIB,INUM_ZS,KDIS=0,KCAT=3,KNUMBER=5)
+      CALL SEARCH_FIELD(IGRIB,INUM_ZS,KDIS=0,KCAT=3,KNUMBER=4)
        IF(INUM_ZS < 0) THEN
          WRITE (ILUOUT0,'(A)')'Orography is missing - abort'
        ENDIF 
diff --git a/src/MNH/read_chem_data_netcdf_case.f90 b/src/MNH/read_chem_data_netcdf_case.f90
index b5e9923162403a4345ae638acf393c5419d115fa..dcfe7b1e65ffd3fe804e74db710c50fa29b2b7a1 100644
--- a/src/MNH/read_chem_data_netcdf_case.f90
+++ b/src/MNH/read_chem_data_netcdf_case.f90
@@ -85,6 +85,7 @@ END MODULE MODI_READ_CHEM_DATA_NETCDF_CASE
 !!      P. Wautelet 30/10/17 use F90 module for netCDF
 !!      J.Pianezzej 13/02/2019 : correction for use of MEGAN
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
 !-------------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -169,7 +170,7 @@ REAL,DIMENSION(:,:),ALLOCATABLE    :: ZVALUE        ! Intermediate array
 REAL,DIMENSION(:),ALLOCATABLE      :: ZVALUE1D        ! Intermediate array
 REAL,DIMENSION(:,:),ALLOCATABLE    :: ZOUT          ! Intermediate arrays
 REAL,DIMENSION(:),ALLOCATABLE      :: ZOUT1D          ! Intermediate arrays
-INTEGER                            :: ind_netcdf    ! Indice for netcdf var.
+INTEGER(kind=CDFINT)               :: ind_netcdf    ! Indice for netcdf var.
 !chemistry field infile MOZ1.nam
 INTEGER                                       :: ICHANNEL
 CHARACTER(LEN=8)                              :: YMOZ="MOZ1.nam"
@@ -195,14 +196,14 @@ integer(kind=CDFINT) :: status, ncid, varid
 integer(kind=CDFINT) :: lat_varid, lon_varid, lev_varid, time_varid
 integer(kind=CDFINT) :: hyam_varid, hybm_varid, p0_varid, t_varid, q_varid, ps_varid
 integer(kind=CDFINT) :: recid, latid, lonid, levid, timeid
-integer(kind=CDFINT) :: latlen, lonlen, levlen, nrecs,timelen
-integer(kind=CDFINT) :: itimeindex, KILEN, jrec
+integer(kind=CDFINT) :: latlen, lonlen, levlen, nrecs, timelen
+integer(kind=CDFINT) :: itimeindex, KILEN
 CHARACTER(LEN=40)                     :: recname
 REAL, DIMENSION(:), ALLOCATABLE       :: lats
 REAL, DIMENSION(:), ALLOCATABLE       :: lons 
 REAL, DIMENSION(:), ALLOCATABLE       :: levs 
-INTEGER, DIMENSION(:), ALLOCATABLE    :: count3d, start3d
-INTEGER, DIMENSION(:), ALLOCATABLE    :: count2d, start2d 
+INTEGER(kind=CDFINT), DIMENSION(:), ALLOCATABLE :: count3d, start3d
+INTEGER(kind=CDFINT), DIMENSION(:), ALLOCATABLE :: count2d, start2d
 REAL, DIMENSION(:), ALLOCATABLE       :: time, hyam, hybm 
 REAL                                  :: p0 
 INTEGER, DIMENSION(:), ALLOCATABLE    :: kinlo 
@@ -573,7 +574,7 @@ DO JI = 1,IMOZ               !for every MNH species existing in MOZ1.nam
            JLOOP1 = JLOOP1+lonlen
          ENDDO                                                                                           
          CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), &
-                     latlen,kinlo,KILEN,                        &
+                     int(latlen,kind=kind(1)),kinlo,KILEN,      &
                      ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT,          &
                      ZOUT(JK,:),.FALSE.,PTIME_HORI,.TRUE.)
          CALL ARRAY_1D_TO_2D(INO,ZOUT(JK,:),IIU,IJU, &
@@ -654,7 +655,7 @@ DO JI = 1,IMOZ               !for every MNH species existing in MOZ1.nam
            JLOOP1 = JLOOP1+lonlen
          ENDDO                                                                                           
          CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), &
-                     latlen,kinlo,KILEN,                        &
+                     int(latlen,kind=kind(1)),kinlo,KILEN,      &
                      ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT,          &
                      ZOUT(JK,:),.FALSE.,PTIME_HORI,.TRUE.)
          CALL ARRAY_1D_TO_2D(INO,ZOUT(JK,:),IIU,IJU, &
@@ -678,7 +679,7 @@ DO JK = 1, levlen
     JLOOP1 = JLOOP1 + lonlen
   ENDDO
   CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), &
-              latlen,kinlo,KILEN,                        &
+              int(latlen,kind=kind(1)),kinlo,KILEN,      &
               ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT,          &
               ZOUT(JK,:),.FALSE.,PTIME_HORI,.FALSE.)
 !
@@ -694,7 +695,7 @@ DO JK = 1, levlen
     JLOOP1 = JLOOP1 + lonlen
   ENDDO
   CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), &
-              latlen,kinlo,KILEN,                                &
+              int(latlen,kind=kind(1)),kinlo,KILEN,      &
               ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT,                  &
               ZOUT(JK,:),.FALSE.,PTIME_HORI,.FALSE.)
 !
@@ -709,7 +710,7 @@ DO JJ = 1, latlen
   JLOOP1 = JLOOP1 + lonlen
 ENDDO
 CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), &
-            latlen,kinlo,KILEN,                                &
+            int(latlen,kind=kind(1)),kinlo,KILEN,      &
             ZVALUE1D(:),INO,ZLONOUT,ZLATOUT,                  &
             ZOUT1D(:),.FALSE.,PTIME_HORI,.FALSE.)
 !
diff --git a/src/MNH/stationn.f90 b/src/MNH/stationn.f90
index 2fa1ab92cfafb6252f3ea28062feacf644b2420d..f1d20df7e869f96195e5b9ac6ca4e6e7fd7e6d1b 100644
--- a/src/MNH/stationn.f90
+++ b/src/MNH/stationn.f90
@@ -101,6 +101,7 @@ USE MODD_CST
 USE MODD_GRID
 USE MODD_TIME
 USE MODD_CONF
+USE MODD_PARAM_n, ONLY : CRAD
 !
 USE MODE_DATETIME
 USE MODE_ll
@@ -398,6 +399,7 @@ IF (GSTORE) THEN
           TSTATION%LE    (IN,I) = STATION_INTERP_2D(XCURRENT_LE    ) 
           TSTATION%LEI   (IN,I) = STATION_INTERP_2D(XCURRENT_LEI   ) 
           TSTATION%GFLUX (IN,I) = STATION_INTERP_2D(XCURRENT_GFLUX ) 
+         IF (CRAD /= 'NONE') THEN
           TSTATION%SWD   (IN,I) = STATION_INTERP_2D(XCURRENT_SWD   ) 
           TSTATION%SWU   (IN,I) = STATION_INTERP_2D(XCURRENT_SWU   ) 
           TSTATION%LWD   (IN,I) = STATION_INTERP_2D(XCURRENT_LWD   ) 
@@ -405,6 +407,7 @@ IF (GSTORE) THEN
           TSTATION%SWDIR (IN,I) = STATION_INTERP_2D(XCURRENT_SWDIR ) 
           TSTATION%SWDIFF(IN,I) = STATION_INTERP_2D(XCURRENT_SWDIFF)
           TSTATION%DSTAOD(IN,I) = STATION_INTERP_2D(XCURRENT_DSTAOD)
+         ENDIF
           TSTATION%SFCO2 (IN,I) = STATION_INTERP_2D(XCURRENT_SFCO2 ) 
         ENDIF
        ELSE
@@ -435,6 +438,7 @@ IF (GSTORE) THEN
           TSTATION%LE    (IN,I) = XCURRENT_LE(TSTATION%I(I),TSTATION%J(I))
           TSTATION%LEI   (IN,I) = XCURRENT_LEI(TSTATION%I(I),TSTATION%J(I))
           TSTATION%GFLUX (IN,I) = XCURRENT_GFLUX(TSTATION%I(I),TSTATION%J(I))
+         IF (CRAD /= 'NONE') THEN
           TSTATION%SWD   (IN,I) = XCURRENT_SWD(TSTATION%I(I),TSTATION%J(I))
           TSTATION%SWU   (IN,I) = XCURRENT_SWU(TSTATION%I(I),TSTATION%J(I))
           TSTATION%LWD   (IN,I) = XCURRENT_LWD(TSTATION%I(I),TSTATION%J(I))
@@ -442,6 +446,7 @@ IF (GSTORE) THEN
           TSTATION%SWDIR (IN,I) = XCURRENT_SWDIR(TSTATION%I(I),TSTATION%J(I))
           TSTATION%SWDIFF(IN,I) = XCURRENT_SWDIFF(TSTATION%I(I),TSTATION%J(I))         
           TSTATION%DSTAOD(IN,I) = XCURRENT_DSTAOD(TSTATION%I(I),TSTATION%J(I))
+         ENDIF
           TSTATION%SFCO2 (IN,I) = XCURRENT_SFCO2(TSTATION%I(I),TSTATION%J(I))
         ENDIF
        ENDIF
@@ -486,6 +491,7 @@ IF (GSTORE) THEN
     CALL DISTRIBUTE_STATION(TSTATION%LE     (IN,I))
     CALL DISTRIBUTE_STATION(TSTATION%LEI    (IN,I))    
     CALL DISTRIBUTE_STATION(TSTATION%GFLUX  (IN,I))
+   IF (CRAD /= 'NONE') THEN
     CALL DISTRIBUTE_STATION(TSTATION%SWD    (IN,I))
     CALL DISTRIBUTE_STATION(TSTATION%SWU    (IN,I))
     CALL DISTRIBUTE_STATION(TSTATION%LWD    (IN,I))
@@ -493,6 +499,7 @@ IF (GSTORE) THEN
     CALL DISTRIBUTE_STATION(TSTATION%SWDIR  (IN,I))
     CALL DISTRIBUTE_STATION(TSTATION%SWDIFF (IN,I))    
     CALL DISTRIBUTE_STATION(TSTATION%DSTAOD (IN,I))
+   END IF
     CALL DISTRIBUTE_STATION(TSTATION%SFCO2  (IN,I))
   ENDIF
   !
diff --git a/src/MNH/tools_c.f90 b/src/MNH/tools_c.f90
index 224b55f4b35635b90713b04322b55aa7eca85b59..60fd4147b3a74545404600df297ae2890b8615cf 100644
--- a/src/MNH/tools_c.f90
+++ b/src/MNH/tools_c.f90
@@ -19,15 +19,34 @@ module modi_tools_c
 !
 !     P. Wautelet 04/12/2018
 !
+! Modifications:
+!  P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8)
+
   use, intrinsic :: iso_c_binding
 
   implicit none
 
+  private
+
+  public :: sleep_c
+
   interface
-    subroutine sleep_c(ksec) bind(c, name="sleep")
+    subroutine sleep_c_intern(ksec) bind(c, name="sleep")
       import C_INT
       integer(kind=C_INT), VALUE :: ksec
-    end subroutine sleep_c
+    end subroutine sleep_c_intern
   end interface
 
+contains
+
+  subroutine sleep_c(ksec)
+    integer, intent(in) :: ksec
+
+    integer(kind=C_INT) :: isec_c
+
+    isec_c = int( ksec, kind=C_INT )
+
+    call sleep_c_intern( isec_c )
+  end subroutine
+
 end module modi_tools_c
diff --git a/src/MNH/viscosity.f90 b/src/MNH/viscosity.f90
index 3b348d47d3fcd02ab1cf41e01de0606a5498808f..b3d3e6a44a3bfa855d8555943dc035330e27689d 100644
--- a/src/MNH/viscosity.f90
+++ b/src/MNH/viscosity.f90
@@ -2,8 +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_VISCOSITY
 !     #####################
@@ -91,6 +90,7 @@ SUBROUTINE VISCOSITY(HLBCX, HLBCY, KRR, KSV, PNU, PPRANDTL,          &
 !!    -------------
 !!      01/18 (C.Lac) Add budgets
 !  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
+!  P. Wautelet 08/11/2019: corrected wrong budget name VISC_BU_RU -> VISC_BU_RTH
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -193,7 +193,7 @@ IF (OVISC_TH) THEN
 !
 END IF
 !
-IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'VISC_BU_RU')
+IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'VISC_BU_RTH')
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/write_profilern.f90 b/src/MNH/write_profilern.f90
index b70fe68aa07c4e64b9abf90081b591f66930374d..2eb2b3b4452ca203fc7d05e8e536933d876ef857 100644
--- a/src/MNH/write_profilern.f90
+++ b/src/MNH/write_profilern.f90
@@ -82,8 +82,9 @@ USE MODD_LG,              ONLY: CLGNAMES
 USE MODD_DUST,            ONLY: CDUSTNAMES, LDUST, NMODE_DST
 USE MODD_SALT,            ONLY: CSALTNAMES, LSALT
 USE MODD_NSV
-USE MODD_RADIATIONS_n,     ONLY:NAER
+USE MODD_RADIATIONS_n,    ONLY:NAER
 USE MODD_DIAG_IN_RUN
+USE MODD_PARAM_n,         ONLY: CRAD
 !
 USE MODE_DUST_PSD
 USE MODE_AERO_PSD
@@ -318,6 +319,7 @@ IF (LDIAG_IN_RUN) THEN
   YCOMMENT (JPROC) = 'Storage heat flux'
   ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%GFLUX(:,II)
   !
+ IF (CRAD /= 'NONE') THEN
   JPROC = JPROC + 1
   YTITLE   (JPROC) = 'SWD'
   YUNIT    (JPROC) = 'W m-2'
@@ -342,6 +344,7 @@ IF (LDIAG_IN_RUN) THEN
   YCOMMENT (JPROC) = 'Upward long-wave radiation'
   ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%LWU(:,II)
   !
+ END IF
   !
   JPROC = JPROC + 1
   YTITLE   (JPROC) = 'TKE_DISS'
diff --git a/src/MNH/write_stationn.f90 b/src/MNH/write_stationn.f90
index 92722fe09c8748365494f66fe7cd59f0728b584a..916f951e3b4a5c45a51d019d01d7dbefd7fec4d5 100644
--- a/src/MNH/write_stationn.f90
+++ b/src/MNH/write_stationn.f90
@@ -78,6 +78,7 @@ USE MODD_DUST,            ONLY: CDUSTNAMES, LDUST, NMODE_DST
 USE MODD_SALT,            ONLY: CSALTNAMES, LSALT, NMODE_SLT
 USE MODD_NSV
 USE MODD_DIAG_IN_RUN
+USE MODD_PARAM_n,         ONLY: CRAD        
 !
 USE MODD_DIM_n             
 USE MODD_GRID_n           
@@ -278,6 +279,7 @@ IF (LDIAG_IN_RUN) THEN
   YCOMMENT (JPROC) = 'Storage heat flux'     
   ZWORK6 (1,1,1,:,1,JPROC) = TSTATION%GFLUX(:,II)
   !
+ IF (CRAD /= 'NONE') THEN
   JPROC = JPROC + 1
   YTITLE   (JPROC) = 'SWD'   
   YUNIT    (JPROC) = 'W m-2'
@@ -320,6 +322,7 @@ IF (LDIAG_IN_RUN) THEN
   YCOMMENT (JPROC) = 'Dust aerosol optical depth'
   ZWORK6 (1,1,1,:,1,JPROC) = TSTATION%DSTAOD(:,II)
   !
+ END IF
   JPROC = JPROC + 1
   YTITLE   (JPROC) = 'LEI'  
   YUNIT    (JPROC) = 'W m-2'
diff --git a/src/SURFEX/init_isban.F90 b/src/SURFEX/init_isban.F90
index dfa0031efbe28ff219ee22d8797ece38d3b8b20b..4bdbb57e1112e5df8c0cf986a6e72663295b7cbe 100644
--- a/src/SURFEX/init_isban.F90
+++ b/src/SURFEX/init_isban.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !#############################################################
 SUBROUTINE INIT_ISBA_n (DTCO, OREAD_BUDGETC, UG, U, USS, GCP, IM, DTZ,&
@@ -58,6 +58,7 @@ SUBROUTINE INIT_ISBA_n (DTCO, OREAD_BUDGETC, UG, U, USS, GCP, IM, DTZ,&
 !!      V.VIonnet       2017 : Blow snow
 !!      P.Tulet        06/16 : add MEGAN coupling  
 !!      J.Pianezzej    02/2019 : correction for use of MEGAN
+!  P. Wautelet 21/11/2019: initialize YSNOW_SCHEME
 !!
 !-------------------------------------------------------------------------------
 !
@@ -267,6 +268,8 @@ IM%O%NNBYEARSOLD = 1
 IM%O%NSPINS      = 1
 IM%O%NSPINW      = 1
 !
+YSNOW_SCHEME='   '
+!
 IF (HINIT=='PRE') THEN 
   CALL READ_PREP_ISBA_SNOW(HPROGRAM,YSNOW_SCHEME,ISNOW_NLAYER)
 !
diff --git a/src/SURFEX/modd_netcdf_sfx.F90 b/src/SURFEX/modd_netcdf_sfx.F90
new file mode 100644
index 0000000000000000000000000000000000000000..9c8bf9becf5f1cc6d8b6f7f62905552b67a3c9cc
--- /dev/null
+++ b/src/SURFEX/modd_netcdf_sfx.F90
@@ -0,0 +1,12 @@
+!SFX_LIC Copyright 2019-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.
+! Author: P. Wautelet 18/09/2019
+module modd_netcdf_sfx
+
+implicit none
+
+integer, parameter :: CDFINT = selected_int_kind( 8 )
+
+end module modd_netcdf_sfx
diff --git a/src/SURFEX/modd_snow_metamo.F90 b/src/SURFEX/modd_snow_metamo.F90
index e48dd6ccda5de27a939527f451f2bf44d4dd2826..12c548f6353a22902bcbd66f9f4ce448458dd8db 100644
--- a/src/SURFEX/modd_snow_metamo.F90
+++ b/src/SURFEX/modd_snow_metamo.F90
@@ -1,6 +1,6 @@
-!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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 ! ajoutEB
 ! correction de l'erreur interversion de XVTANG2 et XVTANG3
@@ -31,11 +31,14 @@
 !!    MODIFICATIONS
 !!    -------------
 !!      Original       02/2008                
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
 !             ------------
 !
+use modd_netcdf_sfx, only: CDFINT
+!
 IMPLICIT NONE
 !
 !-------------------------------------------------------------------------------
@@ -138,11 +141,11 @@ REAL, PARAMETER                 :: XVTELV1 = 0.005
 !
 INTEGER,PARAMETER               :: NVDENT1 = 3
 !
-INTEGER :: NVARDIMS !number of dimensions of netcdf input variable
-INTEGER :: NLENDIM1,NLENDIM2,NLENDIM3
-INTEGER :: NID_VAR ! Netcdf IDs for  variable
+INTEGER(kind=CDFINT) :: NVARDIMS !number of dimensions of netcdf input variable
+INTEGER(kind=CDFINT) :: NLENDIM1,NLENDIM2,NLENDIM3
+INTEGER(kind=CDFINT) :: NID_VAR ! Netcdf IDs for  variable
 !
-INTEGER :: NID_FILE
+INTEGER(kind=CDFINT) :: NID_FILE
 REAL, DIMENSION(:,:,:), POINTER :: XDRDT0,XTAU,XKAPPA   ! field read
 !
 END MODULE MODD_SNOW_METAMO
diff --git a/src/SURFEX/mode_read_cdf.F90 b/src/SURFEX/mode_read_cdf.F90
index ce5e4a05a1f722e1f6101cb4fa8b8a658556b76e..e675d32b4505922a0f078b09c0aa3528f4fe9ba4 100644
--- a/src/SURFEX/mode_read_cdf.F90
+++ b/src/SURFEX/mode_read_cdf.F90
@@ -1,10 +1,13 @@
-!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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
+! Modifications:
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 MODULE MODE_READ_CDF
 !===================================================================
 !
+use modd_netcdf_sfx, only: CDFINT
 !
 USE MODI_ABOR1_SFX
 !
@@ -20,8 +23,8 @@ CONTAINS
 USE NETCDF
 !
 IMPLICIT NONE
-INTEGER, INTENT(IN)           :: status
- CHARACTER(*), INTENT(IN) :: line
+INTEGER(kind=CDFINT), INTENT(IN) :: status
+ CHARACTER(*),            INTENT(IN) :: line
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 !
@@ -41,19 +44,20 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
-INTEGER,INTENT(IN) :: KCDF_ID !netcdf file identifiant
-INTEGER,INTENT(IN) :: IDVAR   !variable to read identifiant
-REAL, INTENT(OUT) ::  PMISSVALUE !undefined value
-REAL,DIMENSION(:),INTENT(OUT) :: PVALU1D !value array
+INTEGER(kind=CDFINT),INTENT(IN)  :: KCDF_ID !netcdf file identifiant
+INTEGER(kind=CDFINT),INTENT(IN)  :: IDVAR   !variable to read identifiant
+REAL,                    INTENT(OUT) :: PMISSVALUE !undefined value
+REAL,DIMENSION(:),       INTENT(OUT) :: PVALU1D !value array
 !
-integer :: status
+integer, parameter :: NDIMS=1
+!
+integer(kind=CDFINT) :: status
 character(len=80) :: HACTION
-integer,save :: NDIMS=1
-integer :: KVARTYPE
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) :: KVARTYPE
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
-integer :: JLOOP
-integer :: NGATTS   
+integer(kind=CDFINT) :: JLOOP
+integer(kind=CDFINT) :: NGATTS
 character(len=80),DIMENSION(:),ALLOCATABLE :: HNAME
 REAL,DIMENSION(:),ALLOCATABLE :: ZVALU1D !value array
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
@@ -132,21 +136,22 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
-INTEGER,INTENT(IN) :: KCDF_ID !netcdf file identifiant
-INTEGER,INTENT(IN) :: IDVAR   !variable to read identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: KCDF_ID !netcdf file identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: IDVAR   !variable to read identifiant
 REAL,DIMENSION(:),INTENT(OUT) :: PDIM1,PDIM2 !dimensions for PVALU2D array
  CHARACTER(len=80),INTENT(OUT) :: HDIM1NAME,HDIM2NAME     !dimensions names
 REAL, INTENT(OUT) :: PMISSVALUE
 REAL,DIMENSION(:,:),INTENT(OUT) :: PVALU2D !value array
 !
-integer :: status
+integer, parameter :: NDIMS=2
+!
+integer(kind=CDFINT) :: status
 character(len=80) :: HACTION
-integer,save :: NDIMS=2
-integer :: KVARTYPE
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) :: KVARTYPE
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
-integer :: JLOOP
-integer :: NGATTS   
+integer(kind=CDFINT) :: JLOOP
+integer(kind=CDFINT) :: NGATTS
 character(len=80),DIMENSION(:),ALLOCATABLE :: HNAME
 real :: ZMISS1,ZMISS2
 REAL,DIMENSION(:,:),ALLOCATABLE :: ZVALU2D !value array
@@ -235,18 +240,19 @@ IMPLICIT NONE
 REAL, DIMENSION(:), INTENT(OUT) :: PLON,PLAT ! Longitudes/latitudes innetcdf file 
 REAL, DIMENSION(:), INTENT(OUT) :: PVAL      ! value to get
 !
-integer :: status
-integer :: kcdf_id
-integer :: NBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: NBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: VARNAME
-integer ::JLOOP1,JDIM1,JDIM2,JLOOP
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::NVARDIMS
-integer ::NLEN
-integer,dimension(1) :: IDIMID
-integer,DIMENSION(1:2) :: NLEN2D,IDIMID2D
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) ::JLOOP1
+integer ::JDIM1,JDIM2,JLOOP
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::NVARDIMS
+integer(kind=CDFINT) ::NLEN
+integer(kind=CDFINT),dimension(1) :: IDIMID
+integer(kind=CDFINT),DIMENSION(1:2) :: NLEN2D,IDIMID2D
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
 real,DIMENSION(:),ALLOCATABLE   :: ZVALU
 real,DIMENSION(:,:),ALLOCATABLE :: ZVALU2D
@@ -430,18 +436,18 @@ IMPLICIT NONE
 !
  CHARACTER(LEN=28), INTENT(IN) :: HFILENAME   ! Name of the field file.
  CHARACTER(LEN=28), INTENT(IN) :: HNCVARNAME  ! Name of variable to read in netcdf file
-INTEGER,           INTENT(OUT):: KDIM        ! value of dimension to get
+INTEGER(kind=CDFINT), INTENT(OUT):: KDIM        ! value of dimension to get
 !
-integer :: status
-integer :: kcdf_id
-integer :: NBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: NBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: VARNAME
-integer ::JLOOP1,JLOOP
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::NVARDIMS
-integer, dimension(1) :: NDIMID
-integer,DIMENSION(2) ::NLEN2D, NDIMID2D
+integer(kind=CDFINT) ::JLOOP1,JLOOP
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::NVARDIMS
+integer(kind=CDFINT), dimension(1) :: NDIMID
+integer(kind=CDFINT),DIMENSION(2) ::NLEN2D, NDIMID2D
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 !
diff --git a/src/SURFEX/mode_read_grib.F90 b/src/SURFEX/mode_read_grib.F90
index ddd50d15ea3a3397107ac71dea73282a5edd4b19..ec71d31314156d270939ae14202ce729473420d3 100644
--- a/src/SURFEX/mode_read_grib.F90
+++ b/src/SURFEX/mode_read_grib.F90
@@ -1,7 +1,11 @@
-!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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
+!-------------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
+!-------------------------------------------------------------------
 !     #####################
 MODULE MODE_READ_GRIB
 !     #####################
@@ -694,7 +698,7 @@ INTEGER,            INTENT(IN)    :: KLUOUT    ! logical unit of output listing
 REAL, DIMENSION(:), INTENT(IN)    :: PMASK     ! grib land mask
 REAL, DIMENSION(:), POINTER       :: PSST      ! 
 !
-INTEGER :: IRET
+INTEGER(kind=kindOfInt) :: IRET
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !-------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('MODE_READ_GRIB:READ_GRIB_SST',0,ZHOOK_HANDLE)
@@ -732,7 +736,7 @@ INTEGER,            INTENT(IN)    :: KLUOUT    ! logical unit of output listing
 REAL, DIMENSION(:), INTENT(IN)    :: PMASK     ! grib land mask
 REAL, DIMENSION(:), POINTER       :: PTS     ! 
 !
-INTEGER :: IRET
+INTEGER(kind=kindOfInt) :: IRET
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !-------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('MODE_READ_GRIB:READ_GRIB_TSWATER',0,ZHOOK_HANDLE)
diff --git a/src/SURFEX/mode_read_netcdf_mercator.F90 b/src/SURFEX/mode_read_netcdf_mercator.F90
index ad51a19ab58e80f12d7665714cf91ada168f0a3a..7462dff30fb1a0739c8c786c5a8e03872b64321f 100644
--- a/src/SURFEX/mode_read_netcdf_mercator.F90
+++ b/src/SURFEX/mode_read_netcdf_mercator.F90
@@ -1,6 +1,6 @@
-!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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !!
 !!      Modified    09/2013 : S. Senesi : adapt READ_NETCDF_SST to read 2D fields other than SST
@@ -10,9 +10,12 @@ MODULE MODE_READ_NETCDF_MERCATOR
 !!      Modified    03/2014 : M.N. Bouin  ! possibility of wave parameters
 !!                                        ! from external source 
 !!                                        ! + correction of 2 bugs
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 !-------------------------------------------------------------------------------
 !
 !
+use modd_netcdf_sfx, only: CDFINT
+!
 USE MODI_ABOR1_SFX
 !
 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
@@ -27,7 +30,7 @@ CONTAINS
 USE NETCDF
 !
 IMPLICIT NONE
-INTEGER, INTENT(IN)           :: status
+INTEGER(kind=CDFINT), INTENT(IN)           :: status
  CHARACTER(LEN=80), INTENT(IN) :: line
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
@@ -48,20 +51,20 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
-INTEGER,INTENT(IN) :: KCDF_ID !netcdf file identifiant
-INTEGER,INTENT(IN) :: IDVAR   !variable to read identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: KCDF_ID !netcdf file identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: IDVAR   !variable to read identifiant
 REAL, INTENT(OUT) ::  PMISSVALUE !undefined value
 REAL,DIMENSION(:),INTENT(OUT) :: PVALU1D !value array
 !
-integer :: status
+integer, parameter :: NDIMS=1
+!
+integer(kind=CDFINT) :: status
 character(len=80) :: HACTION
-integer,save :: NDIMS=1
-integer :: KVARTYPE
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) :: KVARTYPE
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
-integer :: JLOOP
-integer :: NGATTS   
-integer, dimension(1) :: NDIMID
+integer(kind=CDFINT) :: NGATTS
+integer(kind=CDFINT), dimension(1) :: NDIMID
 character(len=80),DIMENSION(:),ALLOCATABLE :: HNAME
 REAL,DIMENSION(:),ALLOCATABLE :: ZVALU1D !value array
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
@@ -122,21 +125,22 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
-INTEGER,INTENT(IN) :: KCDF_ID !netcdf file identifiant
-INTEGER,INTENT(IN) :: IDVAR   !variable to read identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: KCDF_ID !netcdf file identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: IDVAR   !variable to read identifiant
 REAL,DIMENSION(:),INTENT(OUT) :: PDIM1,PDIM2 !dimensions for PVALU2D array
  CHARACTER(len=80),INTENT(OUT) :: HDIM1NAME,HDIM2NAME     !dimensions names
 REAL, INTENT(OUT) :: PMISSVALUE
 REAL,DIMENSION(:,:),INTENT(OUT) :: PVALU2D !value array
 !
-integer :: status
+integer, parameter :: NDIMS=2
+!
+integer(kind=CDFINT) :: status
 character(len=80) :: HACTION
-integer,save :: NDIMS=2
-integer :: KVARTYPE
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) :: KVARTYPE
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
-integer :: JLOOP2, JLOOP, J1, J2
-integer :: NGATTS   
+integer(kind=CDFINT) :: JLOOP2, JLOOP, J1, J2
+integer(kind=CDFINT) :: NGATTS
 character(len=80),DIMENSION(:),ALLOCATABLE :: HNAME
 real :: ZMISS1,ZMISS2
 real :: ZSCFA, ZOFFS
@@ -249,22 +253,23 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
-INTEGER,INTENT(IN) :: KCDF_ID !netcdf file identifiant
-INTEGER,INTENT(IN) :: IDVAR   !variable to read identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: KCDF_ID !netcdf file identifiant
+INTEGER(kind=CDFINT),INTENT(IN) :: IDVAR   !variable to read identifiant
 REAL,DIMENSION(:),INTENT(OUT) :: PDIM1,PDIM2,PDIM3 !dimensions for PVALU2D array
  CHARACTER(len=80),INTENT(OUT) :: HDIM1NAME,HDIM2NAME,HDIM3NAME    !dimensions names
 REAL, INTENT(OUT) :: PMISSVALUE
 REAL,DIMENSION(:,:,:),INTENT(OUT) :: PVALU3D !value array
 !
-integer :: status
+integer, parameter :: NDIMS=3
+!
+integer(kind=CDFINT) :: status
 character(len=80) :: HACTION
-integer,save :: NDIMS=3
-integer :: KVARTYPE
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) :: KVARTYPE
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
-integer :: JLOOP2, JLOOP
-integer :: J1,J2,J3
-integer :: NGATTS   
+integer(kind=CDFINT) :: JLOOP2, JLOOP
+integer(kind=CDFINT) :: J1,J2,J3
+integer(kind=CDFINT) :: NGATTS
 character(len=80),DIMENSION(:),ALLOCATABLE :: HNAME
 real :: ZMISS1,ZMISS2,ZMISS3
 real :: ZSCFA, ZOFFS
@@ -384,18 +389,18 @@ IMPLICIT NONE
 !
  CHARACTER(LEN=28), INTENT(IN) :: HFILENAME   ! Name of the field file.
  CHARACTER(LEN=28), INTENT(IN) :: HNCVARNAME  ! Name of variable to read in netcdf file
-INTEGER,           INTENT(OUT):: KDIM        ! value of dimension to get
+INTEGER(kind=CDFINT), INTENT(OUT):: KDIM        ! value of dimension to get
 !
-integer :: status
-integer :: kcdf_id
-integer :: NBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: NBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: YVARNAME
-integer ::JLOOP1,JLOOP
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::NVARDIMS
-INTEGER, DIMENSION(1) :: NDIMID
-integer,DIMENSION(2) ::NLEN2D, NDIMID2D
+integer(kind=CDFINT) ::JLOOP1,JLOOP
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::NVARDIMS
+INTEGER(kind=CDFINT), DIMENSION(1) :: NDIMID
+integer(kind=CDFINT),DIMENSION(2) ::NLEN2D, NDIMID2D
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 !
@@ -523,18 +528,18 @@ INCLUDE "mpif.h"
  CHARACTER(LEN=28), INTENT(IN) :: HFILENAME   ! Name of the field file.
  CHARACTER(LEN=28), INTENT(IN) :: HNCVARNAME  ! Name of variable to read in netcdf file
 !
-integer :: status
-integer :: kcdf_id
-integer :: INBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: INBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: YVARNAME
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID
-integer ::JLOOP1,JLOOP
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::INVARDIMS
-integer,DIMENSION(3) ::INDIMLEN
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID
+integer(kind=CDFINT) ::JLOOP1,JLOOP
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::INVARDIMS
+integer(kind=CDFINT),DIMENSION(3) ::INDIMLEN
 character(LEN=80),DIMENSION(3) :: NDIMNAM
-integer :: IDIM
+integer(kind=CDFINT) :: IDIM
 integer :: INLON
 INTEGER :: IINLA, INO
 real :: ZZLAMISS,ZZLOMISS
@@ -767,16 +772,16 @@ IMPLICIT NONE
  CHARACTER(LEN=28), INTENT(IN) :: HNCVARNAME  ! Name of variable to read in netcdf file
 REAL, DIMENSION(:), INTENT(OUT) :: PVAL      ! value to get
 !
-integer :: status
-integer :: kcdf_id
-integer :: NBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: NBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: VARNAME
-integer ::JLOOP1
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::NVARDIMS
-INTEGER, DIMENSION(1) :: NDIMID
-integer ::NLEN
+integer(kind=CDFINT) ::JLOOP1
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::NVARDIMS
+INTEGER(kind=CDFINT), DIMENSION(1) :: NDIMID
+integer(kind=CDFINT) ::NLEN
 real,DIMENSION(:),ALLOCATABLE   :: ZVALU
 real :: ZMISS
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
@@ -886,18 +891,18 @@ IMPLICIT NONE
 REAL, DIMENSION(:), INTENT(OUT) :: PLON,PLAT ! Longitudes/latitudes in netcdf file 
 REAL, DIMENSION(:), INTENT(OUT) :: PVAL      ! value to get
 !
-integer :: status
-integer :: kcdf_id
-integer :: NBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: NBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: VARNAME
-integer ::JLOOP1,JDIM1,JDIM2,JLOOP
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::NVARDIMS
-integer ::NLEN
-integer, dimension(1) :: NDIMID
-integer,DIMENSION(2) ::NLEN2D, NDIMID2D
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) ::JLOOP1,JDIM1,JDIM2,JLOOP
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::NVARDIMS
+integer(kind=CDFINT) ::NLEN
+integer(kind=CDFINT), dimension(1) :: NDIMID
+integer(kind=CDFINT),DIMENSION(2) ::NLEN2D, NDIMID2D
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
 real,DIMENSION(:),ALLOCATABLE   :: ZVALU
 real,DIMENSION(:,:),ALLOCATABLE :: ZVALU2D
@@ -1087,17 +1092,18 @@ REAL, DIMENSION(:), INTENT(OUT) :: PLON,PLAT ! Longitudes/latitudes in netcdf fi
 REAL, DIMENSION(:), INTENT(OUT) :: PDEP      ! depth in netcdf file
 REAL, DIMENSION(:,:), INTENT(OUT) :: PVAL      ! value to get
 !
-integer :: status
-integer :: kcdf_id
-integer :: NBVARS
+integer(kind=CDFINT) :: status
+integer(kind=CDFINT) :: kcdf_id
+integer(kind=CDFINT) :: NBVARS
 character(len=80) :: HACTION
 character(len=80),DIMENSION(:),ALLOCATABLE :: VARNAME
-integer ::JLOOP1,JDIM1,JDIM2,JDIM3,JLOOP
+integer(kind=CDFINT) ::JLOOP1
+integer :: JDIM1,JDIM2,JDIM3,JLOOP
 !integer ::JLOOP2,JLOOP
-integer ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
-integer ::NVARDIMS
-integer,DIMENSION(3) ::NLEN3D
-integer,DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
+integer(kind=CDFINT) ::ID_VARTOGET,ID_VARTOGET1,ID_VARTOGET2
+integer(kind=CDFINT) ::NVARDIMS
+integer(kind=CDFINT),DIMENSION(3) ::NLEN3D
+integer(kind=CDFINT),DIMENSION(:),ALLOCATABLE :: NVARDIMID,NVARDIMLEN
 character(len=80),DIMENSION(:),ALLOCATABLE :: NVARDIMNAM
 real,DIMENSION(:,:,:),ALLOCATABLE :: ZVALU3D
 real :: ZMISS
diff --git a/src/SURFEX/mode_snowcro_flanner.F90 b/src/SURFEX/mode_snowcro_flanner.F90
index afa89445276a1ea7d3d79c86b83dd14669b5a9d8..e719d0f2d9701cc733d20b0fe4cbe2619e16c255 100644
--- a/src/SURFEX/mode_snowcro_flanner.F90
+++ b/src/SURFEX/mode_snowcro_flanner.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2013-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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 MODULE MODE_SNOWCRO_FLANNER
 
@@ -24,6 +24,10 @@ MODULE MODE_SNOWCRO_FLANNER
 !!    -------------
 !!      Original    01/2013
 !
+! Modifications:
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
+!
+use modd_netcdf_sfx, only : CDFINT
 USE MODD_SURFEX_OMP, ONLY : NBLOCK
 USE MODD_SURFEX_MPI, ONLY : NRANK, NPIO, NPROC, NCOMM
 !
@@ -72,7 +76,7 @@ IMPLICIT NONE
 !*      2.    declarations of local variables
 !
 INTEGER :: INFOMPI
-INTEGER :: IERROR !error status
+INTEGER(kind=CDFINT) :: IERROR !error status
 !
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
@@ -115,14 +119,14 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
-INTEGER,INTENT(IN) :: ID_FILE
+INTEGER(kind=CDFINT),INTENT(IN) :: ID_FILE
  CHARACTER(LEN=5),INTENT(IN) :: HSURF
 REAL, DIMENSION(:,:,:), POINTER :: PVAR
 !
 INTEGER :: INFOMPI
-INTEGER, DIMENSION(:), ALLOCATABLE :: IVARDIMSID
+INTEGER(kind=CDFINT), DIMENSION(:), ALLOCATABLE :: IVARDIMSID
 !
-INTEGER :: IERROR !error status
+INTEGER(kind=CDFINT) :: IERROR !error status
 !
 IF (NRANK==NPIO) THEN
   ! Look for variable ID
diff --git a/src/SURFEX/prep_isba_netcdf.F90 b/src/SURFEX/prep_isba_netcdf.F90
index c61ec8c397670cd77ad5579eb3b1ceeda601f857..08841012550a9ef1cce41bcced944baee8e6bcd6 100644
--- a/src/SURFEX/prep_isba_netcdf.F90
+++ b/src/SURFEX/prep_isba_netcdf.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2012-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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !     #########
 SUBROUTINE PREP_ISBA_NETCDF (DTCO, U, HPROGRAM,HSURF,HFILE,KLUOUT,PFIELD)
@@ -26,10 +26,14 @@ SUBROUTINE PREP_ISBA_NETCDF (DTCO, U, HPROGRAM,HSURF,HFILE,KLUOUT,PFIELD)
 !!    -------------
 !!      Original    04/2012
 !!      J.Escobar   11/2013  Add USE MODI_GET_TYPE_DIM_n
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 !!------------------------------------------------------------------
 !
 !
 !
+USE GRIB_API, ONLY : kindOfInt
+!
+use modd_netcdf_sfx, only: CDFINT
 USE MODD_DATA_COVER_n, ONLY : DATA_COVER_t
 USE MODD_SURF_ATM_n, ONLY : SURF_ATM_t
 !
@@ -50,7 +54,6 @@ USE PARKIND1  ,ONLY : JPRB
 USE NETCDF
 !
 IMPLICIT NONE
-
 !
 !*      0.1    declarations of arguments
 !
@@ -73,14 +76,14 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZFIELD, ZFIELD0   ! field read
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 INTEGER :: JI, ICPT
-INTEGER::IERROR !error status
+INTEGER(kind=kindOfInt)::IERROR !error status
 INTEGER::JJ,JK,JLOOP ! loop counters
 INTEGER::INLAYERS ! vertical dimension length
 INTEGER::IL ! nature dimension length
-INTEGER::ID_FILE,ID_VAR ! Netcdf IDs for file and variable
-INTEGER::INVARDIMS !number of dimensions of netcdf input variable
-INTEGER,DIMENSION(:),ALLOCATABLE::IVARDIMSID
-INTEGER::ILENDIM,ILENDIM1,ILENDIM2
+INTEGER(kind=CDFINT)::ID_FILE,ID_VAR ! Netcdf IDs for file and variable
+INTEGER(kind=CDFINT)::INVARDIMS !number of dimensions of netcdf input variable
+INTEGER(kind=CDFINT),DIMENSION(:),ALLOCATABLE::IVARDIMSID
+INTEGER(kind=CDFINT)::ILENDIM,ILENDIM1,ILENDIM2
 
 SELECT CASE (TRIM(HSURF))
   CASE ('TG','WG','WGI')
diff --git a/src/SURFEX/read_netcdf.F90 b/src/SURFEX/read_netcdf.F90
index bdd337748e285b1dd8725e6c0abf392282f98e1e..4c724796600155725de103440cf163da75cad548 100644
--- a/src/SURFEX/read_netcdf.F90
+++ b/src/SURFEX/read_netcdf.F90
@@ -1,6 +1,6 @@
-!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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !     #########
       SUBROUTINE READ_NETCDF (UG, U, USS, &
@@ -23,12 +23,14 @@
 !!
 !!    Original    01/2008
 !!
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 !----------------------------------------------------------------------------
 !
 !*    0.     DECLARATION
 !            -----------
 !
 !
+use modd_netcdf_sfx, only : CDFINT
 USE MODD_SURF_ATM_GRID_n, ONLY : SURF_ATM_GRID_t
 USE MODD_SURF_ATM_n, ONLY : SURF_ATM_t
 USE MODD_SSO_n, ONLY : SSO_t
@@ -73,7 +75,7 @@ REAL, DIMENSION(:),ALLOCATABLE :: ZLATI    ! array of values extract from netcdf
 !
 INTEGER      :: ILUOUT                     ! output listing
 INTEGER      :: JLOOP                      ! loop indice
-INTEGER      :: JDIMENSION                 ! dimensions of ZVALU,ZLAT, 
+INTEGER(kind=CDFINT) :: JDIMENSION     ! dimensions of ZVALU,ZLAT,
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
                                            ! and ZLON arrays
 !----------------------------------------------------------------------------
diff --git a/src/SURFEX/read_pgd_netcdf.F90 b/src/SURFEX/read_pgd_netcdf.F90
index a30e3b5ad8e4c858b2a6ea43e36be0e0cb5f3166..6907b4d7895c819c6a802946f8067007a3ca21bc 100644
--- a/src/SURFEX/read_pgd_netcdf.F90
+++ b/src/SURFEX/read_pgd_netcdf.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2012-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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !#################################################################################
 SUBROUTINE READ_PGD_NETCDF (UG, U, USS, &
@@ -26,9 +26,11 @@ SUBROUTINE READ_PGD_NETCDF (UG, U, USS, &
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    11/2012
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 !!------------------------------------------------------------------
 !
 !
+use modd_netcdf_sfx, only : CDFINT
 USE MODD_SURF_ATM_GRID_n, ONLY : SURF_ATM_GRID_t
 USE MODD_SURF_ATM_n, ONLY : SURF_ATM_t
 USE MODD_SSO_n, ONLY : SSO_t
@@ -73,9 +75,9 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZFIELD0
 !
 ! CHARACTER(LEN=28) :: YNCVAR
 !
-INTEGER::IERROR !error status
-INTEGER::ID_FILE ! id of netcdf file
-INTEGER::INFIELD,INLAT,INLON ! dimension lengths
+INTEGER(kind=CDFINT)::IERROR !error status
+INTEGER(kind=CDFINT)::ID_FILE ! id of netcdf file
+INTEGER(kind=CDFINT)::INFIELD,INLAT,INLON ! dimension lengths
 INTEGER::ILUOUT
 INTEGER::JPOINT !loop counter
 !
@@ -175,17 +177,17 @@ USE NETCDF
 IMPLICIT NONE
 
 
-INTEGER,INTENT(IN)::ID_FILE
+INTEGER(kind=CDFINT),INTENT(IN)::ID_FILE
  CHARACTER(LEN=20),   INTENT(IN)  :: HFIELD     ! name of variable
 REAL,DIMENSION(:),POINTER::PFIELD
 
-INTEGER::ID_VAR ! Netcdf IDs for file and variable
-INTEGER::INVARDIMS !number of dimensions of netcdf input variable
-INTEGER,DIMENSION(:),ALLOCATABLE::IVARDIMSID
-INTEGER::ILENDIM1,ILENDIM2
-INTEGER,INTENT(OUT)::ILENDIM
-INTEGER::IERROR !error status
-INTEGER::ITYPE
+INTEGER(kind=CDFINT)::ID_VAR ! Netcdf IDs for file and variable
+INTEGER(kind=CDFINT)::INVARDIMS !number of dimensions of netcdf input variable
+INTEGER(kind=CDFINT),DIMENSION(:),ALLOCATABLE::IVARDIMSID
+INTEGER(kind=CDFINT)::ILENDIM1,ILENDIM2
+INTEGER(kind=CDFINT),INTENT(OUT)::ILENDIM
+INTEGER(kind=CDFINT)::IERROR !error status
+INTEGER(kind=CDFINT)::ITYPE
 
 ! Look for variable ID for HFIELD
 IERROR=NF90_INQ_VARID(ID_FILE,TRIM(HFIELD),ID_VAR)
diff --git a/src/SURFEX/read_z1d_netcdf.F90 b/src/SURFEX/read_z1d_netcdf.F90
index af433b7392ff96229cc157444ba18483b7a4522f..91e77dfe0eeaf46c9624cc69173af559b58deea6 100644
--- a/src/SURFEX/read_z1d_netcdf.F90
+++ b/src/SURFEX/read_z1d_netcdf.F90
@@ -1,6 +1,6 @@
-!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!SFX_LIC Copyright 2014-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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SFX_LIC for details. version 1.
 !     #########
       SUBROUTINE READ_Z1D_NETCDF
@@ -21,12 +21,14 @@
 !!
 !!    Original    11/2014
 !!      initialisation of NOCKMAX,XZHOC
-!!
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
+!
 !----------------------------------------------------------------------------
 !
 !*    0.     DECLARATION
 !            -----------
 !
+use modd_netcdf_sfx, only : CDFINT
 USE MODD_OCEAN_GRID
 USE MODD_SURF_PAR, ONLY : NUNDEF
 USE MODD_PREP_SEAFLUX, ONLY : CFILE_SEAFLX,CTYPE_SEAFLX
@@ -42,7 +44,7 @@ IMPLICIT NONE
 !
 CHARACTER (LEN=28) :: YFILENAME
 CHARACTER (LEN=28)  :: YNCVARNAME
-INTEGER :: JDIMENSION
+INTEGER(kind=CDFINT) :: JDIMENSION
 !
 !*    0.2    Declaration of local variables
 !            ------------------------------
diff --git a/src/SURFEX/start_lake_of.F90 b/src/SURFEX/start_lake_of.F90
index 0f08293016c79cdfd7efc516e9d71ebeb48b335a..26f4b89ba8ea509ba4ce4df1c8a565331c81569f 100644
--- a/src/SURFEX/start_lake_of.F90
+++ b/src/SURFEX/start_lake_of.F90
@@ -45,6 +45,7 @@ SUBROUTINE START_LAKE_OF(KDAY, KMONTH, PLON, PLAT, PDEPTH, &   ! IN
 !         Modified   07/2012, P. Le Moigne : In case there's a lake but no climatic data
 !                                    associated then fill with neighbour existing data
 !                                    instead of aborting
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
 !------------------------------------------------------------------------------------------------------------
 !
 USE MODD_DATA_LAKE, ONLY : CLAKELTA, NLONG, NLATG, XFIRSTLAT, &
@@ -52,6 +53,7 @@ USE MODD_DATA_LAKE, ONLY : CLAKELTA, NLONG, NLATG, XFIRSTLAT, &
                            XAUXT_SNOW, XAUXT_ICE, XAUXT_MNW, XAUXT_WML, XAUXT_BOT, &
                            XAUXT_B1, XAUXCT, XAUXH_SNOW, XAUXH_ICE, XAUXH_ML, &
                            XAUXH_B1, XAUXT_SFC
+use modd_netcdf_sfx, only : CDFINT
 !
 USE MODI_ABOR1_SFX
 !
@@ -62,6 +64,7 @@ USE NETCDF
 !
 IMPLICIT NONE
 !
+!
 !*      0.1    declarations of arguments
 !
 INTEGER, INTENT(IN) :: KDAY,   & ! The day number
@@ -97,7 +100,7 @@ REAL :: ZWLON, ZWLAT, ZWDEPTH
 !
 LOGICAL :: LEXIST
 !
- INTEGER :: ID_LAKELTA, ID_MONTH, &  ! IDs for NetCDF 
+ INTEGER(kind=CDFINT) :: ID_LAKELTA, ID_MONTH, &  ! IDs for NetCDF
             ID_DEC, ID_LON, ID_LAT, ID_DEPTH, &
             ID_T_SNOW, ID_T_ICE, ID_T_MNW, ID_T_WML, ID_T_BOT, ID_T_B1, ID_CT, &
             ID_H_SNOW, ID_H_ICE, ID_H_ML, ID_H_B1, ID_T_SFC
@@ -105,9 +108,9 @@ LOGICAL :: LEXIST
  INTEGER :: ILON, ILAT ! Numbers of the "lake" grid boxes in longitude and latitude
  INTEGER :: IDEPTH ! Number of the lake class in depth
  INTEGER, DIMENSION(1) :: ILOC_DEPTH
- INTEGER :: IRET
- INTEGER :: IMONTHN, IDECN, ILONN, ILATN, IDEPTHN
- INTEGER, DIMENSION(5) :: NINDEX
+ INTEGER(kind=CDFINT) :: IRET
+ INTEGER(kind=CDFINT) :: IMONTHN, IDECN, ILONN, ILATN, IDEPTHN
+ INTEGER(kind=CDFINT), DIMENSION(5) :: NINDEX
  REAL(KIND=JPRB) :: ZHOOK_HANDLE
 ! ----------------------------------------------------------------------------------------------
 !
diff --git a/src/SURFEX/uncompress_field.F90 b/src/SURFEX/uncompress_field.F90
index 684fcdef42379f9e1f2cea7236478c73875335be..a3c2aa88e052868ef2453d6666253eca49c9ecb1 100644
--- a/src/SURFEX/uncompress_field.F90
+++ b/src/SURFEX/uncompress_field.F90
@@ -1,3 +1,11 @@
+!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.
+!------------------------------------------------------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 19/09/2019: correct support of 64bit integers (MNH_INT=8)
+!------------------------------------------------------------------------------------------------------------
 SUBROUTINE UNCOMPRESS_FIELD(KLONG,PSEUIL,PFIELD_IN,PFIELD_OUT)
 
 IMPLICIT NONE
diff --git a/src/configure b/src/configure
index 03587c46eabf707d695b0a7dc7226288298d306f..2e6f572cb49dcbfc706c4399c5c2fb064bdf1609 100755
--- a/src/configure
+++ b/src/configure
@@ -44,6 +44,21 @@ cd ${LOCAL}/conf
 TARG=$(uname -s -n)
 #
 case "$TARG" in
+'Linux jean-zay'*)
+                export ARCH=${ARCH:-LXifort}
+                export VER_MPI=${VER_MPI:-MPIINTEL}
+                export OPTLEVEL=${OPTLEVEL:-O2}
+                export MVWORK=${MVWORK:-NO}
+                export VER_CDF=${VER_CDF:-CDFAUTO}
+                export MNHENV=${MNHENV:-"
+module purge
+module load intel-compilers-19/19.0.4.243
+module load intel-mpi-19/19.0.4.243
+ulimit -s unlimited
+export SLURM_CPU_BIND=none
+export I_MPI_PIN_PROCESSOR_LIST=all:map=spread
+"}
+              ;;
 'Linux'*'occigen'*)
                 export     ARCH=${ARCH:-LXifort}
                 export  VER_MPI=${VER_MPI:-MPIINTEL}