diff --git a/src/LIB/SURCOUCHE/src/modd_io.f90 b/src/LIB/SURCOUCHE/src/modd_io.f90
index d58eeb88c83de738cffc35358da1ff3fa10bec88..60cbbb8a6ee5fd78e3d56ca594a6b429016d7cea 100644
--- a/src/LIB/SURCOUCHE/src/modd_io.f90
+++ b/src/LIB/SURCOUCHE/src/modd_io.f90
@@ -9,6 +9,7 @@
 ! $Name$ 
 ! $Revision$ 
 ! $Date$
+!   J.Escobar 30/06/2017 : Add activation of ZLIB compression if MNH_IOCDF4 == 2
 !-----------------------------------------------------------------
 !-----------------------------------------------------------------
 
@@ -34,5 +35,9 @@ LOGICAL, SAVE :: LPACK = .FALSE. ! TRUE if FM compression occurs in 1D or 2D mod
 LOGICAL, SAVE :: LIOCDF4    = .FALSE. ! TRUE will enable full NetCDF4 (HDF5) I/O support
 LOGICAL, SAVE :: LLFIOUT    = .FALSE. ! TRUE will also force LFI output when LIOCDF4 is on (debug only)  
 LOGICAL, SAVE :: LLFIREAD   = .FALSE. ! TRUE will force LFI read (instead of NetCDF) when LIOCDF4 is on (debug only)  
-LOGICAL, SAVE :: LDEFLATEX2 = .FALSE. ! TRUE to enable Zlib deflate compression on X2 fields  
+#if MNH_IOCDF4 == 2
+LOGICAL, SAVE :: LDEFLATEX2 = .TRUE. ! TRUE to enable Zlib deflate compression on X2/X3 fields
+#else
+LOGICAL, SAVE :: LDEFLATEX2 = .FALSE. ! TRUE to enable Zlib deflate compression on X2/X3 fields
+#endif
 END MODULE MODD_IO_ll
diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
index 7f87881d4c9d8e29eb8d5294d1aa7b685b0094d3..060c71ca002acc71cb3c6665ec1cbed9ac2df3f9 100644
--- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90
+++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
@@ -2,7 +2,8 @@
 MODULE MODE_NETCDF
 !!
 !!      Original  14/04/2015 D. Gazen
-!!      D.Gazen & J.Escobar 24/03/2107 : Correction for compilation of netcdf4IO in REAL*4 <=> MNH_REAL=R4      
+!!      D.Gazen & J.Escobar 24/03/2107 : Correction for compilation of netcdf4IO in REAL*4 <=> MNH_REAL=R4  
+!!      J.Escobar 30/06/2017 : Add activation of ZLIB compression in NCWRITX3    
 !!
 USE MODD_NETCDF
 
@@ -477,6 +478,7 @@ KRESP = IRESP
 END SUBROUTINE NCWRITX2
 
 SUBROUTINE NCWRITX3(PZCDF, HVARNAME, HDIR, PFIELD, TPFMH, KRESP)
+USE MODD_IO_ll, ONLY : LDEFLATEX2
 USE MODD_FM, ONLY : FMHEADER
 TYPE(IOCDF), POINTER              :: PZCDF
 CHARACTER(LEN=*),      INTENT(IN) :: HVARNAME
@@ -485,6 +487,10 @@ REAL, DIMENSION(:,:,:),INTENT(IN) :: PFIELD
 TYPE(FMHEADER),        INTENT(IN) :: TPFMH
 INTEGER,               INTENT(OUT):: KRESP
 
+INTEGER(KIND=IDCDF_KIND),PARAMETER :: SHUFFLE = 0
+INTEGER(KIND=IDCDF_KIND),PARAMETER :: DEFLATE = 1
+INTEGER(KIND=IDCDF_KIND),PARAMETER :: DEFLATE_LEVEL = 2
+
 INTEGER(KIND=IDCDF_KIND) :: STATUS
 INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30)     :: YVARNAME
@@ -506,10 +512,14 @@ STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Get the netcdf dimensions
    CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
-
    ! Define the variable 
    STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX3[NF_DEF_VAR]')
+   IF (LDEFLATEX2) THEN
+      ! Compress the variable with deflate level 2
+      STATUS = NF_DEF_VAR_DEFLATE(INCID, IVARID, SHUFFLE, DEFLATE, DEFLATE_LEVEL)
+      IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX3[NF_DEF_VAR_DEFLATE]')
+   END IF
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITX3 : ', TRIM(YVARNAME), ' already defined !'
diff --git a/src/Makefile b/src/Makefile
index 44311eeab98b119c3e747f716e85636df3a3396d..170ec01d7f0bb2bbbd1a36027b7dbcf0a77e88d9 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -340,9 +340,16 @@ ifeq "$(VER_CDF)" "CDFAUTO"
 HDF_OPT    = ${OPT_BASE_I4:-$OPT_BASE}
 NETCDF_OPT = ${OPT_BASE_I4:-$OPT_BASE}
 #
+# if MNH_IOCDF4=2  use libz
+ifeq "$(MNH_IOCDF4)" "2"
+LZLIB=yes
+else
+LZLIB=no
+endif
+#
 cdf : $(CDF_INC)
 $(CDF_INC) : 
-	cd ${DIR_HDF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --with-zlib=no \
+	cd ${DIR_HDF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --with-zlib=$(LZLIB) \
 	FC="$(FC)" FCFLAGS="$(HDF_OPT)" CPPFLAGS="-DpgiFortran" ${HDF_CONF} && make && make install && $(MAKE) -j 1 clean
 	cd ${DIR_CDF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --disable-cxx --enable-f90 --disable-dap \
         FC="$(FC)" FCFLAGS="$(NETCDF_OPT)" CPPFLAGS="-DpgiFortran ${INC_NETCDF}" ${CDF_CONF} LDFLAGS=" -L${CDF_PATH}/lib64" && make && make install && $(MAKE) -j 1 clean
diff --git a/src/Makefile.MESONH.mk b/src/Makefile.MESONH.mk
index ea570334c3db1a9c7b23517c26c630e7c33ce1d9..c8ef289625452de60680516185a25749789324be 100644
--- a/src/Makefile.MESONH.mk
+++ b/src/Makefile.MESONH.mk
@@ -427,7 +427,7 @@ endif
 ##########################################################
 # NETCDF4 INPUT/OUTPUT in MesoNH 
 ifdef MNH_IOCDF4
-CPPFLAGS_MNH += -DMNH_IOCDF4
+CPPFLAGS_MNH += -DMNH_IOCDF4=$(MNH_IOCDF4)
 endif
 #
 # NetCDF  : AUTO install of netcdf-4.X.X on PC linux to avoid problem with compiler
@@ -437,9 +437,13 @@ ifeq "$(VER_CDF)" "CDFAUTO"
 DIR_CDF?=${SRC_MESONH}/src/LIB/netcdf-${VERSION_CDF}
 CDF_PATH?=${DIR_CDF}-${ARCH}I${MNH_INT}
 CDF_INC?=${CDF_PATH}/include/netcdf.inc
+# if MNH_IOCDF4=2  use libz
+ifeq "$(MNH_IOCDF4)" "2"
+ZLIB=-lz
+endif
 #
 INC_NETCDF     ?= -I${CDF_PATH}/include
-LIB_NETCDF     ?= -L${CDF_PATH}/lib -L${CDF_PATH}/lib64 -lnetcdff -lnetcdf  -lhdf5_hl -lhdf5
+LIB_NETCDF     ?= -L${CDF_PATH}/lib -L${CDF_PATH}/lib64 -lnetcdff -lnetcdf  -lhdf5_hl -lhdf5 $(ZLIB)
 INC            += $(INC_NETCDF)
 LIBS           += $(LIB_NETCDF)
 #