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 835c60cc5745a34a5aee6822e59fbc32a739ea40..16d5f2988ed57c27d4dce7e3ee91d71006ae5735 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
@@ -819,6 +819,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_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 95cc8e030fa19e1aa0a283226e29ede5a4ea5cb7..0197ed559bd919b33a25f5afcfc5452e263018c9 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
@@ -15,6 +15,8 @@
 !  P. Wautelet 12/07/2019: add support for 1D array of dates
 !  P. Wautelet 10/09/2019: IO_Coordvar_write_nc4: split communication and file write operations
 !                          + no more process coordination for Z-split files
+!  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)
 !-----------------------------------------------------------------
 #ifdef MNH_IOCDF4
 module mode_io_write_nc4
@@ -289,10 +291,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)
@@ -2193,6 +2199,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
 !
@@ -2202,7 +2209,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/ch_f77.fx90 b/src/MNH/ch_f77.fx90
index 9935889845b4345f3f627c0c8011457f39a3f981..25e86d2cdf4ce98bdf846ef9e14eb25250567380 100644
--- a/src/MNH/ch_f77.fx90
+++ b/src/MNH/ch_f77.fx90
@@ -24,6 +24,7 @@ C**MODIFIED: 08/02/2019 (P.Wautelet) bug fixes: missing argument
 C                                             + wrong use of an non initialized value
 C**MODIFIED: P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 C  P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
+C  P. Wautelet 21/11/2019: replace several CONTINUE (workaround of problems with gfortran OpenACC)
 C!
 C!
 C!
@@ -5440,21 +5441,10 @@ c      INCLUDE 'params'
       IF(nwint .eq. -12) mopt = 12
       IF(nwint .eq. -13) mopt = 13
 
-      IF (mopt .EQ. 1) GO TO 1
-      IF (mopt .EQ. 2) GO TO 2
-      IF (mopt .EQ. 3) GO TO 3
-      IF (mopt .EQ. 4) GO TO 4
-      IF (mopt .EQ. 5) GO TO 5
-      IF (mopt .EQ. 6) GO TO 6
-
-      IF (mopt .EQ. 10) GO TO 10
-      IF (mopt .EQ. 11) GO TO 11
-      IF (mopt .EQ. 12) GO TO 12
-      IF (mopt .EQ. 13) GO TO 13
-
+      select case( mopt )
 *_______________________________________________________________________
 
- 1    CONTINUE
+      case ( 1 )
 
       wlabel = 'equal spacing'
       nw = nwint + 1
@@ -5465,11 +5455,10 @@ c      INCLUDE 'params'
          wc(iw) = ( wl(iw) + wu(iw) )/2.
       ENDDO
       wl(nw) = wu(nw-1)
-      GO TO 9
 
 *_______________________________________________________________________
 
- 2    CONTINUE
+      case ( 2 )
 
 * Input from table.  In this example:
 * Wavelength grid will be read from a file.
@@ -5491,11 +5480,10 @@ c      wlabel = 'isaksen.grid'
          wu(iw) = wl(iw+1)
          wc(iw) = 0.5*(wl(iw) + wu(iw))
       ENDDO
-      GO TO 9
 
 *_______________________________________________________________________
 
- 3    CONTINUE
+      case ( 3 )
 
 * user-defined grid.  In this example, a single calculation is used to 
 * obtain results for two 1 nm wide intervals centered at 310 and 400 nm:
@@ -5512,11 +5500,11 @@ c      wlabel = 'isaksen.grid'
          wu(iw) = wl(iw+1)
          wc(iw) = 0.5*(wl(iw) + wu(iw))
       ENDDO
-      GO TO 9
 
 *_______________________________________________________________________
 
- 4    CONTINUE
+      case ( 4 )
+
       wlabel = 'fast-TUV tropospheric grid'
       
       fi = 'DATAE1/GRIDS/fast_tuv.grid'
@@ -5542,11 +5530,9 @@ c      wlabel = 'isaksen.grid'
          wc(iw) = 0.5*(wl(iw) + wu(iw))
       ENDDO
 
-      GO TO 9
-
 *_______________________________________________________________________
 
- 5    continue
+      case ( 5 )
 
 * use standard grid up to 205.8 nm
 * elsewhere, use 10 cm-1 grid to 1000 nm
@@ -5574,11 +5560,9 @@ c      wlabel = 'isaksen.grid'
          wc(iw) = (wl(iw) + wu(iw))/2.
       ENDDO
 
-      GO TO 9
-
 *_______________________________________________________________________
 
- 6    CONTINUE
+      case ( 6 )
 
 ***** Correction for air-vacuum wavelength shift:
 * The TUV code assumes that all working wavelengths are strictly IN-VACUUM. This is for ALL
@@ -5615,10 +5599,10 @@ c      wlabel = 'isaksen.grid'
       CALL wshift(mrefr, nwint, wc, airout, kout)
       CALL wshift(mrefr, nwint, wu, airout, kout)
 
-      GO TO 9
 *_______________________________________________________________________
 * Landgraf and Crutzen 1998
- 10   CONTINUE
+      case ( 10 )
+
       nw = 6
       wl(1) = 289.0
       wl(2) = 305.5
@@ -5630,10 +5614,10 @@ c      wlabel = 'isaksen.grid'
          wu(iw) = wl(iw+1)
          wc(iw) = 0.5*(wl(iw) + wu(iw))
       ENDDO
-      GO TO 9
 *_______________________________________________________________________
 * Wild 2000
- 11   CONTINUE
+      case ( 11 )
+
       nw = 8
       wl(1) = 289.00
       wl(2) = 298.25
@@ -5648,10 +5632,11 @@ c      wlabel = 'isaksen.grid'
          wu(iw) = wl(iw+1)
          wc(iw) = 0.5*(wl(iw) + wu(iw))
       ENDDO
-      GO TO 9
+
 *_______________________________________________________________________
 * Bian and Prather 2002
- 12   CONTINUE
+      case ( 12 )
+
       nw = 8
       wl(1) = 291.0
       wl(2) = 298.3
@@ -5666,13 +5651,12 @@ c      wlabel = 'isaksen.grid'
          wu(iw) = wl(iw+1)
          wc(iw) = 0.5*(wl(iw) + wu(iw))
       ENDDO
-      GO TO 9
-*_______________________________________________________________________
 
 *_______________________________________________________________________
 * UV-b, UV-A, Vis
 
- 13   CONTINUE
+      case ( 13 )
+
       nw = 4
       wl(1) = 280.0
       wl(2) = 315.0
@@ -5683,10 +5667,10 @@ c      wlabel = 'isaksen.grid'
          wu(iw) = wl(iw+1)
          wc(iw) = 0.5*(wl(iw) + wu(iw))
       ENDDO
-      GO TO 9
+
 *_______________________________________________________________________
 
- 9    CONTINUE
+      end select
 
 * check grid for assorted improprieties:
 
@@ -5816,12 +5800,13 @@ c      wlabel = 'isaksen.grid'
 * 4 = mirage z-grid for Mexico City
 * 5 = arbitrary user-defined grid
 
+#if 0
       GO TO 5
 
 *-----grid option 2: manual -----------------
 * entire grid (nz levels) in increments zincr 
 
- 1    CONTINUE
+  1   CONTINUE
       WRITE(*,*) 'equally spaced z-grid'
       zincr = (zstop - zstart) / REAL(nz - 1)
       z(1) = zstart
@@ -5941,28 +5926,27 @@ c      wlabel = 'isaksen.grid'
 *-----grid option 5: user defined
 
  5    CONTINUE
+#endif
 
 * insert your grid values here:
 * specify:
 *  nz = total number of altitudes
 * Table:  z(iz), where iz goes from 1 to nz
 C      use model levels for vertical grid where available
-       do 12, i = 1, nlevel
+       do i = 1, nlevel
          z(i) = zin(i) *1E-3
-12     continue
+       end do
        nz = nlevel
 C      fill up between model top and 50km with 1km grid spacing
-20     continue
-       if (z(nz) .ge. 50.) goto 30
+       do while (z(nz) < 50.)
          nz = nz + 1
          if (nz .gt. kz)
      &     call Print_msg( NVERB_FATAL, 'GEN', 'gridz',
      &                     'not enough memory, increase kz' )
          z(nz) = z(nz-1) + 1.
-       goto 20
-C
-30     continue
+       end do
 
+#if 0
 C
       GOTO 10
 
@@ -5983,6 +5967,7 @@ C
 *------------------------------------------------
 
  10   CONTINUE      
+#endif
 
 * Insert additional altitude for selected outputs.
 
@@ -7127,17 +7112,21 @@ C       locals
 	OPEN (NEWUNIT=IN_LUN, FILE=
      $       'DATAE1/O2/effxstex.txt',FORM='FORMATTED')
 
-	READ( IN_LUN, 901 )
+C	READ( IN_LUN, 901 )
+	READ( IN_LUN, '( / )' )
 	DO I = 1,20
-	  READ( IN_LUN, 903 ) ( AC(I,J), J=1,17 )
+C	  READ( IN_LUN, 903 ) ( AC(I,J), J=1,17 )
+	  READ( IN_LUN, '( 17(E23.14,1x) )' ) ( AC(I,J), J=1,17 )
 	ENDDO
-	READ( IN_LUN, 901 )
+C	READ( IN_LUN, 901 )
+	READ( IN_LUN, '( / )' )
 	DO I = 1,20
-	  READ( IN_LUN, 903 ) ( BC(I,J), J=1,17 )
+C	  READ( IN_LUN, 903 ) ( BC(I,J), J=1,17 )
+	  READ( IN_LUN, '( 17(E23.14,1x) )' ) ( BC(I,J), J=1,17 )
 	ENDDO
 
- 901    FORMAT( / )
- 903    FORMAT( 17(E23.14,1x))
+C   901 FORMAT( / )
+C   903 FORMAT( 17(E23.14,1x))
 
  998	CLOSE (IN_LUN)
 	
@@ -7174,11 +7163,11 @@ c	  WRITE(6,*) 'X NOT IN RANGE IN CHEBEV', X
         DD=0.
         Y=(2.*X-A-B)/(B-A)
         Y2=2.*Y
-        DO 11 J=M,2,-1
+        DO J=M,2,-1
           SV=D
           D=Y2*D-DD+C(J)
           DD=SV
- 11     CONTINUE
+        END DO
         CHEBEV=Y*D-DD+0.5*C(1)
       
 	RETURN
@@ -7839,7 +7828,7 @@ CCC FILE numer.f
 * also, use this loop to find the point at which xnew needs to be inserted
 * into vector x, if x is sorted.
 
- 10   CONTINUE
+   10 CONTINUE
       IF (i .LT. n) THEN
         IF (x(i) .LT. x(i-1)) THEN
           call Print_msg( NVERB_FATAL, 'GEN', 'addpnt',
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 8b2b47e73c091ec40ccdab80f4ac0aa8b334ba21..219e12397615e3a52af8ccd216f6eafc00f2ff9d 100644
--- a/src/MNH/ini_surfstationn.f90
+++ b/src/MNH/ini_surfstationn.f90
@@ -187,6 +187,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))
@@ -215,6 +217,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 e1073f233c28c2b4640134fab9ab554b18b422e0..eab7659703ead9f6ee1c679c835ff6b85394cf90 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -265,6 +265,7 @@ END MODULE MODI_MODEL_n
 !  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
 !  P. Wautelet 13/09/2019: budget: simplify and modernize date/time management
+!  J. Escobar  27/09/2019: add missing report timing of RESOLVED_ELEC       
 !!-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -599,7 +600,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
@@ -1735,19 +1736,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
@@ -1765,7 +1766,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,   &
@@ -1783,7 +1784,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,   &
@@ -1843,7 +1844,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
@@ -2143,6 +2144,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','=')
@@ -2155,8 +2157,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/nband_model.fx90 b/src/MNH/nband_model.fx90
index 53afd5948ba507103dc76601f246710c187b3b11..e0aface0e240a114c19048fbf5ddf99cb6c969f5 100644
--- a/src/MNH/nband_model.fx90
+++ b/src/MNH/nband_model.fx90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 diag 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 ***FILE:     nband_model.f
 ***AUTHOR:   J.-P. Chaboureau *LA*
 ***DATE:     29/03/00
@@ -17,6 +12,8 @@
 *                               indicated by "*MNH"
 *                                named nband_model.f90 and compiled with -Fixed
 *           J.Escobar (1/12/2017) bug => intialized all ZV=0.0 in spectr
+*           P. Wautelet 21/11/2019: replace several CONTINUE (workaround of problems with gfortran OpenACC)
+*
       SUBROUTINE NBMVEC
      I ( KIDIA  ,KFDIA ,KLON,KLEV,KGL,KCABS,KNG1,KUABS
      I , KH2O   ,KCO2  ,KO3,KCNT,KN2O,KCH4,KCO,KC11,KC12,KCFC
@@ -145,20 +142,20 @@ C     IF (NIMP.EQ.0) STOP
 *MNH       PCMCH4 = CVCH4 * RCH4M / RAIRM
       PCMCH4 = XCH4 * XCH4M / XAIRM
 C      
-      DO 103 JA=1,8
-      DO 102 JK=1,KGL+1  
-      DO 101 JL=KIDIA,KFDIA
-      ZU(JL,JA,JK)=0.
- 101  CONTINUE
- 102  CONTINUE
- 103  CONTINUE     
-      DO 106 JA=1,3
-      DO 105 JK=1,KGL+1  
-      DO 104 JL=KIDIA,KFDIA
-      ZXT(JL,JA,JK)=0.
- 104  CONTINUE
- 105  CONTINUE
- 106  CONTINUE 
+      DO JA=1,8
+        DO JK=1,KGL+1
+          DO JL=KIDIA,KFDIA
+            ZU(JL,JA,JK)=0.
+          END DO
+        END DO
+      END DO
+      DO JA=1,3
+        DO JK=1,KGL+1
+          DO JL=KIDIA,KFDIA
+            ZXT(JL,JA,JK)=0.
+          END DO
+        END DO
+      END DO
 c      DO 113 JNIV=1,2
 c      DO 112 JSI=1,10  
 c      DO 111 JL=KIDIA,KFDIA
@@ -178,26 +175,26 @@ C
  200  CONTINUE
 C
       IG1P1=KNG1+1
-      DO 201 JL=KIDIA,KFDIA
+      DO JL=KIDIA,KFDIA
       ZSSIG(JL,1)=PPL(JL,1)
- 201  CONTINUE
+      END DO
 C      
-      DO 206 JK = 1 , KLEV
-      JKJ=(JK-1)*IG1P1+1
-      JKJR = JKJ
-      JKJP = JKJ + IG1P1
-      DO 203 JL = KIDIA,KFDIA
-      ZSSIG(JL,JKJP)=PPL(JL,JK+1)
- 203  CONTINUE
-      DO 205 IG1=1,KNG1
-      JKJ=JKJ+1
-      DO 204 JL = KIDIA,KFDIA
-      ZSSIG(JL,JKJ)= (ZSSIG(JL,JKJR)+ZSSIG(JL,JKJP))*0.5
+      DO JK = 1 , KLEV
+        JKJ=(JK-1)*IG1P1+1
+        JKJR = JKJ
+        JKJP = JKJ + IG1P1
+        DO JL = KIDIA,KFDIA
+          ZSSIG(JL,JKJP)=PPL(JL,JK+1)
+        END DO
+        DO IG1=1,KNG1
+          JKJ=JKJ+1
+          DO JL = KIDIA,KFDIA
+            ZSSIG(JL,JKJ)= (ZSSIG(JL,JKJR)+ZSSIG(JL,JKJP))*0.5
 *MNH     S  + RT1(IG1) * (ZSSIG(JL,JKJP) - ZSSIG(JL,JKJR)) * 0.5
-     S  + XRT1(IG1) * (ZSSIG(JL,JKJP) - ZSSIG(JL,JKJR)) * 0.5
- 204  CONTINUE
- 205  CONTINUE
- 206  CONTINUE
+     S      + XRT1(IG1) * (ZSSIG(JL,JKJP) - ZSSIG(JL,JKJR)) * 0.5
+          END DO
+        END DO
+      END DO
 C      
 C-----------------------------------------------------------------------
 C
@@ -219,39 +216,39 @@ C 9301 FORMAT(1X,I4,2E13.6)
 C      END IF     
  302  CONTINUE
 C
-      DO 306 JK = 1 , KLEV
-      JKP1=JK+1
-      JKL = KLEV+1 - JK
-      DO 303 JL = KIDIA,KFDIA
-      ZXWV(JL) = MAX (PQVAVE(JL,JK) , ZEPSCQ )
-      ZXOZ(JL) = MAX (PO3AVE(JL,JK) , ZEPSCO )
- 303  CONTINUE
-      JKJ=(JK-1)*IG1P1+1
-      JKJPN=JKJ+KNG1
-      DO 305 JKK=JKJ,JKJPN
-      DO 304 JL = KIDIA,KFDIA
-      ZUPMH2O = ( ZUPM(JL,JKK) + PVGH2O ) * ZDPM(JL,JKK) / 101325.
-      ZUPMCO2 = ( ZUPM(JL,JKK) + PVGCO2 ) * ZDPM(JL,JKK) / 101325.
-      ZUPMO3  = ( ZUPM(JL,JKK) + PVGO3  ) * ZDPM(JL,JKK) / 101325. 
-      ZDUC(JL,JKK)= ZDPM(JL,JK)
-      ZU6= ZXWV(JL) * ZUPMH2O
-      ZFPPW= 1.6078 * ZXWV(JL) / (1.+0.608*ZXWV(JL))
-      ZU(JL, 1,JKK) = ZXWV(JL) * ZDPM(JL,JKK)
-      ZU(JL, 2,JKK) = ZXWV(JL) * ZUPMH2O
-      ZU(JL, 3,JKK) = PCMCO2    * ZDPM(JL,JKK)
-      ZU(JL, 4,JKK) = PCMCO2    * ZUPMCO2
-      ZU(JL, 5,JKK) = ZXOZ(JL) * ZDPM(JL,JKK)
-      ZU(JL, 6,JKK) = ZXOZ(JL) * ZUPMO3
-      ZU(JL, 7,JKK) = ZU6      * ZFPPW
-      ZU(JL, 8,JKK) = ZU6      * (1.-ZFPPW)
- 304  CONTINUE
- 305  CONTINUE
- 306  CONTINUE
-      DO 308 JA=1,8
-      DO 307 JL=KIDIA,KFDIA
-      ZU(JL,JA,KGL+1) = 0.
- 307  CONTINUE     
- 308  CONTINUE     
+      DO JK = 1 , KLEV
+        JKP1=JK+1
+        JKL = KLEV+1 - JK
+        DO JL = KIDIA,KFDIA
+          ZXWV(JL) = MAX (PQVAVE(JL,JK) , ZEPSCQ )
+          ZXOZ(JL) = MAX (PO3AVE(JL,JK) , ZEPSCO )
+        END DO
+        JKJ=(JK-1)*IG1P1+1
+        JKJPN=JKJ+KNG1
+        DO JKK=JKJ,JKJPN
+          DO JL = KIDIA,KFDIA
+            ZUPMH2O = ( ZUPM(JL,JKK) + PVGH2O ) * ZDPM(JL,JKK) / 101325.
+            ZUPMCO2 = ( ZUPM(JL,JKK) + PVGCO2 ) * ZDPM(JL,JKK) / 101325.
+            ZUPMO3  = ( ZUPM(JL,JKK) + PVGO3  ) * ZDPM(JL,JKK) / 101325.
+            ZDUC(JL,JKK)= ZDPM(JL,JK)
+            ZU6= ZXWV(JL) * ZUPMH2O
+            ZFPPW= 1.6078 * ZXWV(JL) / (1.+0.608*ZXWV(JL))
+            ZU(JL, 1,JKK) = ZXWV(JL) * ZDPM(JL,JKK)
+            ZU(JL, 2,JKK) = ZXWV(JL) * ZUPMH2O
+            ZU(JL, 3,JKK) = PCMCO2    * ZDPM(JL,JKK)
+            ZU(JL, 4,JKK) = PCMCO2    * ZUPMCO2
+            ZU(JL, 5,JKK) = ZXOZ(JL) * ZDPM(JL,JKK)
+            ZU(JL, 6,JKK) = ZXOZ(JL) * ZUPMO3
+            ZU(JL, 7,JKK) = ZU6      * ZFPPW
+            ZU(JL, 8,JKK) = ZU6      * (1.-ZFPPW)
+          END DO
+        END DO
+      END DO
+      DO JA=1,8
+        DO JL=KIDIA,KFDIA
+          ZU(JL,JA,KGL+1) = 0.
+        END DO
+      END DO
 C      IF (NIMP.EQ.0) THEN
 C      DO 312 JK=1,KGL+1
 C      PRINT 9312,JK,(ZU(KIDIA,JA,JK),JA=1,8)
@@ -1681,37 +1678,35 @@ C     ------------------------------------------------------------------
 C
 C          1.
 C
- 100  CONTINUE
-C
-      DO 101 JL=KIDIA,KFDIA
-      PTAU(JL)=0.
- 101  CONTINUE
+      DO JL=KIDIA,KFDIA
+        PTAU(JL)=0.
+      END DO
 C
 *MNH      IF (PWVN.GT.CLIM(1)  .AND. PWVN.LT.CLIM(2)) THEN
       IF (PWVN.GT.XCLIM(1)  .AND. PWVN.LT.XCLIM(2)) THEN
 C
          ZCOEF=4.18 + 5578.*EXP(-7.87e-03*PWVN)
-         DO 102 JL=KIDIA,KFDIA
-         ZE(JL)=PV(JL,11,KINF)-PV(JL,11,KSUP)
-         ZP(JL)=PV(JL,12,KINF)-PV(JL,12,KSUP)
-         ZTAUE(JL)=PANGLE(JL)*ZCOEF*ZE(JL)
-         ZTAUP(JL)=PANGLE(JL)*ZCOEF*ZP(JL)*0.002
- 102     CONTINUE
+         DO JL=KIDIA,KFDIA
+           ZE(JL)=PV(JL,11,KINF)-PV(JL,11,KSUP)
+           ZP(JL)=PV(JL,12,KINF)-PV(JL,12,KSUP)
+           ZTAUE(JL)=PANGLE(JL)*ZCOEF*ZE(JL)
+           ZTAUP(JL)=PANGLE(JL)*ZCOEF*ZP(JL)*0.002
+         END DO
 C
          IF (KCABS.EQ.20) THEN
-            DO 103 JL=KIDIA,KFDIA
-            ZTAUE(JL)=0.
- 103        CONTINUE
+            DO JL=KIDIA,KFDIA
+              ZTAUE(JL)=0.
+            END DO
          END IF
          IF (KCABS.EQ.21) THEN
-            DO 104 JL=KIDIA,KFDIA
-            ZTAUP(JL)=0.
- 104        CONTINUE
+            DO JL=KIDIA,KFDIA
+              ZTAUP(JL)=0.
+            END DO
          END IF
 C
-         DO 105 JL=KIDIA,KFDIA
-         PTAU(JL)=ZTAUE(JL)+ZTAUP(JL)
- 105     CONTINUE
+         DO JL=KIDIA,KFDIA
+           PTAU(JL)=ZTAUE(JL)+ZTAUP(JL)
+         END DO
       END IF
 C
 C     ------------------------------------------------------------------
@@ -2043,86 +2038,78 @@ C
 C*         1.      INITIALIZE TO CLEAR-SKY FLUXES
 C                  ------------------------------
 C
- 100  CONTINUE
       IMAXC=KLEV
       REPSEC=1.E-12
       REPSEC=1.e-7 ! JPChaboureau's modification to avoid division by zero
 C
-      DO 102 JK = 1 , KLEV+1
-      DO 101 JL = KIDIA,KFDIA
-      PFDT(JL,JK) = PFDC(JL,JK)
-      PFUT(JL,JK) = PFUC(JL,JK)
- 101  CONTINUE
- 102  CONTINUE
+      DO JK = 1 , KLEV+1
+        DO JL = KIDIA,KFDIA
+          PFDT(JL,JK) = PFDC(JL,JK)
+          PFUT(JL,JK) = PFUC(JL,JK)
+        END DO
+      END DO
 C
-      DO 105 JK1=1,KLEV+1
-      DO 104 JK2=1,KLEV+1
-      DO 103 JL = KIDIA,KFDIA
-      ZUPF(JL,JK2,JK1)=PFUC(JL,JK1)
-      ZDNF(JL,JK2,JK1)=PFDC(JL,JK1)
- 103  CONTINUE
- 104  CONTINUE
- 105  CONTINUE
+      DO JK1=1,KLEV+1
+        DO JK2=1,KLEV+1
+          DO JL = KIDIA,KFDIA
+            ZUPF(JL,JK2,JK1)=PFUC(JL,JK1)
+            ZDNF(JL,JK2,JK1)=PFDC(JL,JK1)
+          END DO
+        END DO
+      END DO
 C
 C     ------------------------------------------------------------------
 C
 C*         2.      FLUXES FOR ONE OVERCAST UNITY EMISSIVITY CLOUD
 C                  ----------------------------------------------
 C
- 200  CONTINUE
-C
-      DO 229 JKC = 1 , IMAXC
-      JCLOUD=JKC
-      JKCP1=JCLOUD+1
+      DO JKC = 1 , IMAXC
+        JCLOUD=JKC
+        JKCP1=JCLOUD+1
 C
 C*         2.1     ABOVE THE CLOUD
 C                  ---------------
 C
- 210  CONTINUE
-C
-      DO 215 JK=JKCP1,KLEV+1
-      JKM1=JK-1
-      DO 211 JL = KIDIA,KFDIA
-      ZFU(JL)=0.
- 211  CONTINUE
-      IF (JK .GT. JKCP1) THEN
-         DO 213 JKJ=JKCP1,JKM1
-         DO 212 JL = KIDIA,KFDIA
-         ZFU(JL) = ZFU(JL) + PCNTRB(JL,JK,JKJ)
- 212     CONTINUE
- 213     CONTINUE
-      END IF
-C
-      DO 214 JL = KIDIA,KFDIA
-      ZUPF(JL,JKCP1,JK)=PBLEV(JL,JK)-ZFU(JL)
- 214  CONTINUE
- 215  CONTINUE
+        DO JK=JKCP1,KLEV+1
+          JKM1=JK-1
+          DO JL = KIDIA,KFDIA
+            ZFU(JL)=0.
+          END DO
+          IF (JK .GT. JKCP1) THEN
+            DO JKJ=JKCP1,JKM1
+              DO JL = KIDIA,KFDIA
+                ZFU(JL) = ZFU(JL) + PCNTRB(JL,JK,JKJ)
+              END DO
+            END DO
+          END IF
+C
+          DO JL = KIDIA,KFDIA
+            ZUPF(JL,JKCP1,JK)=PBLEV(JL,JK)-ZFU(JL)
+          END DO
+        END DO
 C
 C
 C*         2.2     BELOW THE CLOUD
 C                  ---------------
 C
- 220  CONTINUE
-C
-      DO 225 JK=1,JCLOUD
-      JKP1=JK+1
-      DO 221 JL = KIDIA,KFDIA
-      ZFD(JL)=0.
- 221  CONTINUE
-C
-      IF (JK .LT. JCLOUD) THEN
-         DO 223 JKJ=JKP1,JCLOUD
-         DO 222 JL = KIDIA,KFDIA
-         ZFD(JL) = ZFD(JL) + PCNTRB(JL,JK,JKJ)
- 222     CONTINUE
- 223     CONTINUE
-      END IF
-      DO 224 JL = KIDIA,KFDIA
-      ZDNF(JL,JKCP1,JK)=-PBLEV(JL,JK)-ZFD(JL)
- 224  CONTINUE
- 225  CONTINUE
-C
- 229  CONTINUE
+        DO JK=1,JCLOUD
+          JKP1=JK+1
+          DO JL = KIDIA,KFDIA
+            ZFD(JL)=0.
+          END DO
+C
+          IF (JK .LT. JCLOUD) THEN
+            DO JKJ=JKP1,JCLOUD
+              DO JL = KIDIA,KFDIA
+                ZFD(JL) = ZFD(JL) + PCNTRB(JL,JK,JKJ)
+              END DO
+            END DO
+          END IF
+          DO JL = KIDIA,KFDIA
+            ZDNF(JL,JKCP1,JK)=-PBLEV(JL,JK)-ZFD(JL)
+          END DO
+        END DO
+      END DO
 C
 C     ------------------------------------------------------------------
 C
@@ -2132,130 +2119,120 @@ C
 C*    ZCLM(JK1,JK2) IS THE OBSCURATION FACTOR BY CLOUD LAYERS BETWEEN
 C     HALF-LEVELS JK1 AND JK2 AS SEEN FROM JK1
 C
- 300  CONTINUE
-C
-      DO 303 JK1 = 1 , KLEV+1
-      DO 302 JK2 = 1 , KLEV+1
-      DO 301 JL = KIDIA,KFDIA
-      ZCLM(JL,JK1,JK2) = 0.
- 301  CONTINUE
- 302  CONTINUE
- 303  CONTINUE
+      DO JK1 = 1 , KLEV+1
+        DO JK2 = 1 , KLEV+1
+          DO JL = KIDIA,KFDIA
+            ZCLM(JL,JK1,JK2) = 0.
+          END DO
+        END DO
+      END DO
 C
 C
 C
 C*         3.1     CLOUD COVER BELOW THE LEVEL OF CALCULATION
 C                  ------------------------------------------
 C
- 310  CONTINUE
-C
-      DO 314 JK1 = 2 , KLEV+1
-      DO 311 JL = KIDIA,KFDIA
-      ZCLEAR(JL)=1.
-      ZCLOUD(JL)=0.
- 311  CONTINUE
-      DO 313 JK = JK1 - 1 , 1 , -1
-      DO 312 JL = KIDIA,KFDIA
-      IF (KOVLP.EQ.1) THEN
-c* maximum-random       
-         ZCLEAR(JL)=ZCLEAR(JL)*(1.0-MAX(PCLDLU(JL,JK),ZCLOUD(JL)))
+      DO JK1 = 2 , KLEV+1
+        DO JL = KIDIA,KFDIA
+          ZCLEAR(JL)=1.
+          ZCLOUD(JL)=0.
+        END DO
+        DO JK = JK1 - 1 , 1 , -1
+          DO JL = KIDIA,KFDIA
+            IF (KOVLP.EQ.1) THEN
+c* maximum-random
+              ZCLEAR(JL)=ZCLEAR(JL)*(1.0-MAX(PCLDLU(JL,JK),ZCLOUD(JL)))
      *                        /(1.0-MIN(ZCLOUD(JL),1.-REPSEC))
-         ZCLM(JL,JK1,JK) = 1.0 - ZCLEAR(JL)
-         ZCLOUD(JL) = PCLDLU(JL,JK)
-      ELSE IF (KOVLP.EQ.2) THEN 
-c* maximum      
-c         ZCLOUD(JL) = AMAX1(ZCLOUD(JL) , PCLDLU(JL,JK))
-	ZCLOUD(JL)=MAX(ZCLOUD(JL),PCLDLU(JL,JK))
-         ZCLM(JL,JK1,JK) = ZCLOUD(JL)
-      ELSE IF (KOVLP.EQ.3) THEN
-c* random      
-         ZCLEAR(JL) = ZCLEAR(JL)*(1.0 - PCLDLU(JL,JK))
-         ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
-         ZCLM(JL,JK1,JK) = ZCLOUD(JL)
-      END IF
- 312  CONTINUE
- 313  CONTINUE
- 314  CONTINUE
+              ZCLM(JL,JK1,JK) = 1.0 - ZCLEAR(JL)
+              ZCLOUD(JL) = PCLDLU(JL,JK)
+            ELSE IF (KOVLP.EQ.2) THEN
+c* maximum
+c             ZCLOUD(JL) = AMAX1(ZCLOUD(JL) , PCLDLU(JL,JK))
+              ZCLOUD(JL)=MAX(ZCLOUD(JL),PCLDLU(JL,JK))
+              ZCLM(JL,JK1,JK) = ZCLOUD(JL)
+            ELSE IF (KOVLP.EQ.3) THEN
+c* random
+              ZCLEAR(JL) = ZCLEAR(JL)*(1.0 - PCLDLU(JL,JK))
+              ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
+              ZCLM(JL,JK1,JK) = ZCLOUD(JL)
+            END IF
+          END DO
+        END DO
+      END DO
 C
 C
 C*         3.2     CLOUD COVER ABOVE THE LEVEL OF CALCULATION
 C                  ------------------------------------------
 C
- 320  CONTINUE
-C
-      DO 324 JK1 = 1 , KLEV
-      DO 321 JL = KIDIA,KFDIA
-      ZCLEAR(JL)=1.
-      ZCLOUD(JL)=0.
- 321  CONTINUE
-      DO 323 JK = JK1 , KLEV
-      DO 322 JL = KIDIA,KFDIA
-      IF (KOVLP.EQ.1) THEN
-c* maximum-random       
-         ZCLEAR(JL)=ZCLEAR(JL)*(1.0-MAX(PCLDLD(JL,JK),ZCLOUD(JL)))
+      DO JK1 = 1 , KLEV
+        DO JL = KIDIA,KFDIA
+          ZCLEAR(JL)=1.
+          ZCLOUD(JL)=0.
+        END DO
+        DO JK = JK1 , KLEV
+          DO JL = KIDIA,KFDIA
+            IF (KOVLP.EQ.1) THEN
+c* maximum-random
+              ZCLEAR(JL)=ZCLEAR(JL)*(1.0-MAX(PCLDLD(JL,JK),ZCLOUD(JL)))
      *                        /(1.0-MIN(ZCLOUD(JL),1.-REPSEC))
-         ZCLM(JL,JK1,JK) = 1.0 - ZCLEAR(JL)
-         ZCLOUD(JL) = PCLDLD(JL,JK)
-      ELSE IF (KOVLP.EQ.2) THEN 
-c* maximum      
-c         ZCLOUD(JL) = AMAX1(ZCLOUD(JL) , PCLDLD(JL,JK))
-	ZCLOUD(JL)=MAX(ZCLOUD(JL) , PCLDLD(JL,JK))
-         ZCLM(JL,JK1,JK) = ZCLOUD(JL)
-      ELSE IF (KOVLP.EQ.3) THEN
-c* random      
-         ZCLEAR(JL) = ZCLEAR(JL)*(1.0 - PCLDLD(JL,JK))
-         ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
-         ZCLM(JL,JK1,JK) = ZCLOUD(JL)
-      END IF
- 322  CONTINUE
- 323  CONTINUE
- 324  CONTINUE
+              ZCLM(JL,JK1,JK) = 1.0 - ZCLEAR(JL)
+              ZCLOUD(JL) = PCLDLD(JL,JK)
+            ELSE IF (KOVLP.EQ.2) THEN
+c* maximum
+c               ZCLOUD(JL) = AMAX1(ZCLOUD(JL) , PCLDLD(JL,JK))
+              ZCLOUD(JL)=MAX(ZCLOUD(JL) , PCLDLD(JL,JK))
+              ZCLM(JL,JK1,JK) = ZCLOUD(JL)
+            ELSE IF (KOVLP.EQ.3) THEN
+c* random
+              ZCLEAR(JL) = ZCLEAR(JL)*(1.0 - PCLDLD(JL,JK))
+              ZCLOUD(JL) = 1.0 - ZCLEAR(JL)
+              ZCLM(JL,JK1,JK) = ZCLOUD(JL)
+            END IF
+          END DO
+        END DO
+      END DO
 C
 C
 C     ------------------------------------------------------------------
 C
 C*         4.      FLUXES FOR PARTIAL/MULTIPLE LAYERED CLOUDINESS
 C                  ----------------------------------------------
-C
- 400  CONTINUE
 C
 C*         4.1     DOWNWARD FLUXES
 C                  ---------------
 C
- 410  CONTINUE
-C
-      DO 411 JL = KIDIA,KFDIA
-      PFDT(JL,KLEV+1) = 0.
- 411  CONTINUE
+      DO JL = KIDIA,KFDIA
+        PFDT(JL,KLEV+1) = 0.
+      END DO
 C
-      DO 417 JK1 = KLEV , 1 , -1
+      DO JK1 = KLEV , 1 , -1
 C
 C*                 CONTRIBUTION FROM CLEAR-SKY FRACTION
 C
-      DO 412 JL = KIDIA,KFDIA
-      ZFD (JL) = (1. - ZCLM(JL,JK1,KLEV)) * ZDNF(JL,1,JK1)
- 412  CONTINUE
+        DO JL = KIDIA,KFDIA
+          ZFD (JL) = (1. - ZCLM(JL,JK1,KLEV)) * ZDNF(JL,1,JK1)
+        END DO
 C
 C*                 CONTRIBUTION FROM ADJACENT CLOUD
 C
-      DO 413 JL = KIDIA,KFDIA
-      ZFD(JL) = ZFD(JL) + ZCLM(JL,JK1,JK1) * ZDNF(JL,JK1+1,JK1)
- 413  CONTINUE
+        DO JL = KIDIA,KFDIA
+          ZFD(JL) = ZFD(JL) + ZCLM(JL,JK1,JK1) * ZDNF(JL,JK1+1,JK1)
+        END DO
 C
 C*                 CONTRIBUTION FROM OTHER CLOUDY FRACTIONS
 C
-      DO 415 JK = KLEV-1 , JK1 , -1
-      DO 414 JL = KIDIA,KFDIA
-      ZCFRAC = ZCLM(JL,JK1,JK+1) - ZCLM(JL,JK1,JK)
-      ZFD(JL) =  ZFD(JL) + ZCFRAC * ZDNF(JL,JK+2,JK1)
- 414  CONTINUE
- 415  CONTINUE
+        DO JK = KLEV-1 , JK1 , -1
+          DO JL = KIDIA,KFDIA
+            ZCFRAC = ZCLM(JL,JK1,JK+1) - ZCLM(JL,JK1,JK)
+            ZFD(JL) =  ZFD(JL) + ZCFRAC * ZDNF(JL,JK+2,JK1)
+          END DO
+        END DO
 C
-      DO 416 JL = KIDIA,KFDIA
-      PFDT(JL,JK1) = ZFD (JL)
- 416  CONTINUE
+        DO JL = KIDIA,KFDIA
+          PFDT(JL,JK1) = ZFD (JL)
+        END DO
 C
- 417  CONTINUE
+      END DO
 C
 C
 C
@@ -2263,11 +2240,9 @@ C
 C*         4.2     UPWARD FLUX AT THE SURFACE
 C                  --------------------------
 C
- 420  CONTINUE
-C
-      DO 421 JL = KIDIA,KFDIA
-      PFUT(JL,1) = PEM0(JL)*PBSUR(JL)-(1.-PEM0(JL))*PFDT(JL,1)
- 421  CONTINUE
+      DO JL = KIDIA,KFDIA
+        PFUT(JL,1) = PEM0(JL)*PBSUR(JL)-(1.-PEM0(JL))*PFDT(JL,1)
+      END DO
 C
 C
 C
@@ -2275,36 +2250,34 @@ C
 C*         4.3     UPWARD FLUXES
 C                  -------------
 C
- 430  CONTINUE
-C
-      DO 437 JK1 = 2 , KLEV+1
+      DO JK1 = 2 , KLEV+1
 C
 C*                 CONTRIBUTION FROM CLEAR-SKY FRACTION
 C
-      DO 432 JL = KIDIA,KFDIA
-      ZFU (JL) = (1. - ZCLM(JL,JK1,1)) * ZUPF(JL,1,JK1)
- 432  CONTINUE
+        DO JL = KIDIA,KFDIA
+          ZFU (JL) = (1. - ZCLM(JL,JK1,1)) * ZUPF(JL,1,JK1)
+        END DO
 C
 C*                 CONTRIBUTION FROM ADJACENT CLOUD
 C
-      DO 433 JL = KIDIA,KFDIA
-      ZFU(JL) =  ZFU(JL) + ZCLM(JL,JK1,JK1-1) * ZUPF(JL,JK1,JK1)
- 433  CONTINUE
+        DO JL = KIDIA,KFDIA
+          ZFU(JL) =  ZFU(JL) + ZCLM(JL,JK1,JK1-1) * ZUPF(JL,JK1,JK1)
+        END DO
 C
 C*                 CONTRIBUTION FROM OTHER CLOUDY FRACTIONS
 C
-      DO 435 JK = 2 , JK1-1
-      DO 434 JL = KIDIA,KFDIA
-      ZCFRAC = ZCLM(JL,JK1,JK-1) - ZCLM(JL,JK1,JK)
-      ZFU(JL) =  ZFU(JL) + ZCFRAC * ZUPF(JL,JK  ,JK1)
- 434  CONTINUE
- 435  CONTINUE
+        DO JK = 2 , JK1-1
+          DO JL = KIDIA,KFDIA
+            ZCFRAC = ZCLM(JL,JK1,JK-1) - ZCLM(JL,JK1,JK)
+            ZFU(JL) =  ZFU(JL) + ZCFRAC * ZUPF(JL,JK  ,JK1)
+          END DO
+        END DO
 C
-      DO 436 JL = KIDIA,KFDIA
-      PFUT(JL,JK1) = ZFU (JL)
- 436  CONTINUE
+        DO JL = KIDIA,KFDIA
+          PFUT(JL,JK1) = ZFU (JL)
+        END DO
 C
- 437  CONTINUE
+      END DO
 C
 C-----------------------------------------------------------------------
 C
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 e9beceaa387a7a84ff6bf6d8dc2e4e4ae4998d65..70d3fb4411aa6ae6e3fd8f2064de5efe09b16d68 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 ce7a3f0b758036b8e485499aebcb6954304d05f4..a311590ffb2047a34726c276c78d3f0797a3b8c1 100644
--- a/src/MNH/profilern.f90
+++ b/src/MNH/profilern.f90
@@ -96,7 +96,7 @@ USE MODD_GRID
 USE MODD_SUB_PROFILER_n
 USE MODD_NSV
 USE MODD_PARAMETERS
-USE MODD_PARAM_n,        ONLY : CCLOUD
+USE MODD_PARAM_n,        ONLY: CCLOUD, CRAD
 USE MODD_PROFILER_n
 USE MODD_TIME,           only: tdtexp
 USE MODD_TIME_n,         only: tdtcur
@@ -512,10 +512,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
@@ -544,10 +546,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 a86f384b1897094e5aa356dc6f91ceb96e1e2243..b2ba41a713963f3ceeeafdafe61ed2306ae3788a 100644
--- a/src/MNH/rain_ice.f90
+++ b/src/MNH/rain_ice.f90
@@ -907,7 +907,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 33f1fa4a9ffea8542d8f8dfa55fafb3393a80b49..1c71367b1befd1043898e32e5c4c2450e1fd8363 100644
--- a/src/MNH/stationn.f90
+++ b/src/MNH/stationn.f90
@@ -90,11 +90,11 @@ USE MODD_CST
 USE MODD_DIAG_IN_RUN
 USE MODD_GRID
 USE MODD_PARAMETERS
-USE MODD_STATION_n
-USE MODD_SUB_STATION_n
+USE MODD_PARAM_n,       only: CRAD
+use modd_station_n
+use modd_sub_station_n
 use modd_time,          only: tdtexp
 use modd_time_n,        only: tdtcur
-USE MODD_TYPE_DATE
 !
 USE MODE_ll
 !
@@ -372,6 +372,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   ) 
@@ -379,6 +380,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
@@ -409,6 +411,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))
@@ -416,6 +419,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
@@ -460,6 +464,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))
@@ -467,6 +472,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 54d2170c1a52324b5db3370b510595760f113a42..fb7a01b5c23b3149fbb469bd7c7590a3adb5560d 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
diff --git a/src/MNH/write_profilern.f90 b/src/MNH/write_profilern.f90
index 507f7483f288dedbc181446fef1d2b85f7590827..7b3ed0d552d36004c3120719f63873269c4dbc57 100644
--- a/src/MNH/write_profilern.f90
+++ b/src/MNH/write_profilern.f90
@@ -83,8 +83,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_AERO_PSD
 USE MODE_DUST_PSD
@@ -315,6 +316,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'
@@ -339,6 +341,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 4361a9a91fd94f13896036f97c2344d0779ff93e..f5d3a81f2e14d54d1385efac2eef39bb161e3921 100644
--- a/src/MNH/write_stationn.f90
+++ b/src/MNH/write_stationn.f90
@@ -79,6 +79,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           
@@ -273,6 +274,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'
@@ -315,6 +317,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}