diff --git a/src/LIB/SURCOUCHE/src/fmreadwrit.f90 b/src/LIB/SURCOUCHE/src/fmreadwrit.f90
index d811f475f88d6bfe3d0a22511f1763a44df1f35d..efe4e6f6776c742f5831883bd4ab76cb86570ca3 100644
--- a/src/LIB/SURCOUCHE/src/fmreadwrit.f90
+++ b/src/LIB/SURCOUCHE/src/fmreadwrit.f90
@@ -267,8 +267,9 @@ PRIVATE
 INTERFACE IO_WRITE_FIELD_LFI
    MODULE PROCEDURE IO_WRITE_FIELD_LFI_X0,IO_WRITE_FIELD_LFI_X1, &
                     IO_WRITE_FIELD_LFI_X2,IO_WRITE_FIELD_LFI_X3, &
-                    IO_WRITE_FIELD_LFI_N0, &
-                    IO_WRITE_FIELD_LFI_C0
+                    IO_WRITE_FIELD_LFI_N0,                       &
+                    IO_WRITE_FIELD_LFI_C0,                       &
+                    IO_WRITE_FIELD_LFI_T0
 END INTERFACE IO_WRITE_FIELD_LFI
 !
 PUBLIC IO_WRITE_FIELD_LFI
@@ -495,6 +496,73 @@ IF (ALLOCATED(IWORK)) DEALLOCATE(IWORK)
 !
 END SUBROUTINE IO_WRITE_FIELD_LFI_C0
 !
+SUBROUTINE IO_WRITE_FIELD_LFI_T0(TPFIELD,KFLU,TPDATA,KRESP)
+!
+USE MODD_TYPE_DATE
+!
+IMPLICIT NONE
+!
+!*      0.1   Declarations of arguments
+!
+TYPE(TFIELDDATA),        INTENT(IN) :: TPFIELD
+INTEGER,                 INTENT(IN) :: KFLU   ! Fortran Logical Unit
+TYPE (DATE_TIME),        INTENT(IN) :: TPDATA ! array containing the data field
+INTEGER,                 INTENT(OUT):: KRESP  ! return-code if problems araised
+!
+!*      0.2   Declarations of local variables
+!
+INTEGER                                  :: ILENG
+INTEGER(kind=LFI_INT)                    :: IRESP, ITOTAL
+TYPE(TFIELDDATA)                         :: TZFIELD
+INTEGER, DIMENSION(3)                    :: ITDATE    ! date array
+INTEGER(KIND=8),DIMENSION(:),ALLOCATABLE :: IWORK
+!
+CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_LFI_T0','writing '//TRIM(TPFIELD%CMNHNAME))
+!
+TZFIELD = TPFIELD
+!
+! Write date
+!
+TZFIELD%CMNHNAME = TRIM(TPFIELD%CMNHNAME)//'%TDATE'
+TZFIELD%CCOMMENT = 'YYYYMMDD'
+ITDATE(1)=TPDATA%TDATE%YEAR
+ITDATE(2)=TPDATA%TDATE%MONTH
+ITDATE(3)=TPDATA%TDATE%DAY
+ILENG=SIZE(ITDATE)
+!
+CALL WRITE_PREPARE(TZFIELD,ILENG,IWORK,ITOTAL,IRESP)
+!
+IF (IRESP==0) THEN
+  IWORK(LEN_TRIM(TZFIELD%CCOMMENT)+3:)=ITDATE(:)
+  CALL LFIECR(IRESP,KFLU,TRIM(TZFIELD%CMNHNAME),IWORK,ITOTAL)
+ENDIF
+!
+IF (ALLOCATED(IWORK)) DEALLOCATE(IWORK)
+!
+IF (IRESP/=0) THEN
+  KRESP = IRESP
+  RETURN
+END IF
+!
+! Write time
+!
+TZFIELD%CMNHNAME = TRIM(TPFIELD%CMNHNAME)//'%TIME'
+TZFIELD%CCOMMENT = 'SECONDS'
+ILENG=1
+!
+CALL WRITE_PREPARE(TZFIELD,ILENG,IWORK,ITOTAL,IRESP)
+!
+IF (IRESP==0) THEN
+  CALL TRANSFW(IWORK(LEN_TRIM(TZFIELD%CCOMMENT)+3),TPDATA%TIME,ILENG)
+  CALL LFIECR(IRESP,KFLU,TRIM(TZFIELD%CMNHNAME),IWORK,ITOTAL)
+ENDIF
+!
+KRESP=IRESP
+!
+IF (ALLOCATED(IWORK)) DEALLOCATE(IWORK)
+!
+END SUBROUTINE IO_WRITE_FIELD_LFI_T0
+!
 SUBROUTINE WRITE_PREPARE(TPFIELD,KLENG,KWORK,KTOTAL,KRESP)
 !
 TYPE(TFIELDDATA),                        INTENT(IN)    :: TPFIELD
diff --git a/src/LIB/SURCOUCHE/src/fmwrit_ll.f90 b/src/LIB/SURCOUCHE/src/fmwrit_ll.f90
index a34f402a91a202552c0b5686d167ec9f54fcc1c6..e66e745ee8fc38a1e68f23d6df5be349c0c45b93 100644
--- a/src/LIB/SURCOUCHE/src/fmwrit_ll.f90
+++ b/src/LIB/SURCOUCHE/src/fmwrit_ll.f90
@@ -184,11 +184,13 @@ MODULE MODE_FMWRIT
                       IO_WRITE_FIELD_BYNAME_N0,                            &
                       IO_WRITE_FIELD_BYNAME_L0,                            &
                       IO_WRITE_FIELD_BYNAME_C0,                            &
+                      IO_WRITE_FIELD_BYNAME_T0,                            &
                       IO_WRITE_FIELD_BYFIELD_X0,IO_WRITE_FIELD_BYFIELD_X1, &
                       IO_WRITE_FIELD_BYFIELD_X2,IO_WRITE_FIELD_BYFIELD_X3, &
                       IO_WRITE_FIELD_BYFIELD_N0,                           &
                       IO_WRITE_FIELD_BYFIELD_L0,                           &
-                      IO_WRITE_FIELD_BYFIELD_C0
+                      IO_WRITE_FIELD_BYFIELD_C0,                           &
+                      IO_WRITE_FIELD_BYFIELD_T0
   END INTERFACE
 
   INTERFACE FMWRIT
@@ -2920,6 +2922,82 @@ CONTAINS
     KRESP = IRESP
   END SUBROUTINE FMWRITT0_ll
 
+  SUBROUTINE IO_WRITE_FIELD_BYNAME_T0(TPFILE,HNAME,HFIPRI,KRESP,TFIELD)
+    !
+    USE MODD_IO_ll, ONLY : TFILEDATA
+    !
+    !*      0.1   Declarations of arguments
+    !
+    TYPE(TFILEDATA),             INTENT(IN) :: TPFILE
+    CHARACTER(LEN=*),            INTENT(IN) :: HNAME    ! name of the field to write
+    CHARACTER(LEN=*),            INTENT(IN) :: HFIPRI   ! output file for error messages
+    INTEGER,                     INTENT(OUT):: KRESP    ! return-code 
+    TYPE (DATE_TIME),            INTENT(IN) :: TFIELD   ! array containing the data field
+    !
+    !*      0.2   Declarations of local variables
+    !
+    INTEGER :: ID ! Index of the field
+    !
+    CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_BYNAME_T0','writing '//TRIM(HNAME))
+    !
+    CALL FIND_FIELD_ID_FROM_MNHNAME(HNAME,ID,KRESP)
+    !
+    IF(KRESP==0) CALL IO_WRITE_FIELD(TPFILE,TFIELDLIST(ID),HFIPRI,KRESP,TFIELD)
+    !
+  END SUBROUTINE IO_WRITE_FIELD_BYNAME_T0
+
+  SUBROUTINE IO_WRITE_FIELD_BYFIELD_T0(TPFILE,TPFIELD,HFIPRI,KRESP,TFIELD)
+    USE MODD_IO_ll
+    USE MODD_FM
+    USE MODD_TYPE_DATE
+    USE MODE_FD_ll, ONLY : GETFD,JPFINL,FD_LL
+    !*      0.    DECLARATIONS
+    !             ------------
+    !
+    !
+    !*      0.1   Declarations of arguments
+    !
+    TYPE(TFILEDATA),             INTENT(IN) :: TPFILE
+    TYPE(TFIELDDATA),            INTENT(IN) :: TPFIELD
+    CHARACTER(LEN=*),            INTENT(IN) :: HFIPRI   ! output file for error messages
+    INTEGER,                     INTENT(OUT):: KRESP    ! return-code 
+    TYPE (DATE_TIME),            INTENT(IN) :: TFIELD   ! array containing the data field
+    !
+    !*      0.2   Declarations of local variables
+    !
+    INTEGER                      :: IERR
+    TYPE(FD_ll), POINTER         :: TZFD
+    INTEGER                      :: IRESP
+    !
+    CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_BYFIELD_T0','writing '//TRIM(TPFIELD%CMNHNAME))
+    !
+    IRESP = 0
+    !
+    !------------------------------------------------------------------
+    TZFD=>GETFD(TRIM(ADJUSTL(TPFILE%CNAME))//'.lfi')
+    IF (ASSOCIATED(TZFD)) THEN
+       IF (GSMONOPROC) THEN ! sequential execution
+          IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFIELD,TZFD%FLU,TFIELD,IRESP)
+          IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,TZFD%CDF,TFIELD,IRESP)
+       ELSE 
+          IF (ISP == TZFD%OWNER)  THEN
+             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFIELD,TZFD%FLU,TFIELD,IRESP)
+             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,TZFD%CDF,TFIELD,IRESP)
+          END IF
+          !
+          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TZFD%OWNER-1,TZFD%COMM,IERR)
+       END IF
+    ELSE 
+       IRESP = -61
+    END IF
+    !----------------------------------------------------------------
+    IF (IRESP.NE.0) THEN
+       CALL FM_WRIT_ERR("IO_WRITE_FIELD_BYFIELD_T0",TPFILE%CNAME,HFIPRI,TPFIELD%CMNHNAME,TPFIELD%CDIR,TPFIELD%NGRID,&
+                        LEN(TPFIELD%CCOMMENT) ,IRESP)
+    END IF
+    KRESP = IRESP
+  END SUBROUTINE IO_WRITE_FIELD_BYFIELD_T0
+
   SUBROUTINE FMWRIT_LB(HFILEM,HRECFM,HFIPRI,HLBTYPE,PLB,KRIM,KL3D,&
        & KGRID,KLENCH,HCOMMENT,KRESP)
     USE MODD_IO_ll,        ONLY : ISP,ISNPROC,GSMONOPROC,LIOCDF4,LLFIOUT,LPACK,L2D
diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90
index df87dded9351d1d11a6458326ac9a5c1a1382d13..c7c36018f5768767980ec97d24198aea3446cb8e 100644
--- a/src/LIB/SURCOUCHE/src/mode_field.f90
+++ b/src/LIB/SURCOUCHE/src/mode_field.f90
@@ -7,12 +7,13 @@ MODULE MODE_FIELD
 USE MODD_CONF, ONLY : CPROGRAM
 USE MODD_IO_ll, ONLY : NVERB_DEBUG,NVERB_INFO,NVERB_WARNING,NVERB_ERROR,NVERB_FATAL
 USE MODD_PARAMETERS
+USE MODD_TYPE_DATE
 USE MODE_MSG
 !
 IMPLICIT NONE
 !
 INTEGER,PRIVATE,PARAMETER :: MAXFIELDS = 100
-INTEGER,PARAMETER :: TYPEUNDEF = -1, TYPEINT = 1, TYPELOG = 2, TYPEREAL = 3, TYPECHAR = 4
+INTEGER,PARAMETER :: TYPEUNDEF = -1, TYPEINT = 1, TYPELOG = 2, TYPEREAL = 3, TYPECHAR = 4, TYPEDATE = 5
 !
 TYPE TFIELDPTR_L0D
   LOGICAL,              POINTER :: DATA => NULL()
@@ -34,12 +35,16 @@ TYPE TFIELDPTR_X3D
   REAL,DIMENSION(:,:,:),POINTER :: DATA => NULL()
 END TYPE TFIELDPTR_X3D
 !
+TYPE TFIELDPTR_T0D
+  TYPE(DATE_TIME),      POINTER :: DATA => NULL()
+END TYPE TFIELDPTR_T0D
+!
 !Structure describing the characteristics of a field
 TYPE TFIELDDATA
   CHARACTER(LEN=NMNHNAMELGTMAX) :: CMNHNAME  = '' !Name of the field (for MesoNH, non CF convention)
   CHARACTER(LEN=32)  :: CSTDNAME  = '' !Standard name (CF convention)
   CHARACTER(LEN=32)  :: CLONGNAME = '' !Long name (CF convention)
-  CHARACTER(LEN=32)  :: CUNITS    = '' !Canonical units (CF convention)
+  CHARACTER(LEN=40)  :: CUNITS    = '' !Canonical units (CF convention)
   CHARACTER(LEN=2)   :: CDIR      = '' !Type of the data field (XX,XY,--...)
   CHARACTER(LEN=100) :: CCOMMENT  = '' !Comment (for MesoNH, non CF convention)
   INTEGER            :: NGRID     = -1 !Localization on the model grid
@@ -52,6 +57,8 @@ TYPE TFIELDDATA
   TYPE(TFIELDPTR_X1D),DIMENSION(:),ALLOCATABLE :: TFIELD_X1D !Pointer to the real 1D fields (one per nested mesh)
   TYPE(TFIELDPTR_X2D),DIMENSION(:),ALLOCATABLE :: TFIELD_X2D !Pointer to the real 2D fields (one per nested mesh)
   TYPE(TFIELDPTR_X3D),DIMENSION(:),ALLOCATABLE :: TFIELD_X3D !Pointer to the real 3D fields (one per nested mesh)
+  !
+  TYPE(TFIELDPTR_T0D),DIMENSION(:),ALLOCATABLE :: TFIELD_T0D !Pointer to the scalar date/time fields (one per nested mesh)
 END TYPE TFIELDDATA
 !
 LOGICAL,SAVE :: LFIELDLIST_ISINIT = .FALSE.
diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
index d39cc750e9566f912c4d8e5c864114855e468c1a..81c3a139612576693cd28c6f5da4b2fc2a113f84 100644
--- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90
+++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
@@ -25,8 +25,9 @@ INTEGER(KIND=IDCDF_KIND),PARAMETER :: DEFLATE = 1
 INTERFACE IO_WRITE_FIELD_NC4
    MODULE PROCEDURE IO_WRITE_FIELD_NC4_X0,IO_WRITE_FIELD_NC4_X1, &
                     IO_WRITE_FIELD_NC4_X2,IO_WRITE_FIELD_NC4_X3, &
-                    IO_WRITE_FIELD_NC4_N0, &
-                    IO_WRITE_FIELD_NC4_C0
+                    IO_WRITE_FIELD_NC4_N0,                       &
+                    IO_WRITE_FIELD_NC4_C0,                       &
+                    IO_WRITE_FIELD_NC4_T0
 END INTERFACE IO_WRITE_FIELD_NC4
 
 INTERFACE NCWRIT
@@ -201,11 +202,12 @@ IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'WRITATTR [NF90_PUT_AT
 
 END SUBROUTINE WRITATTR
 
-SUBROUTINE IO_WRITE_FIELD_ATTR_NC4(TPFIELD,KNCID,KVARID)
+SUBROUTINE IO_WRITE_FIELD_ATTR_NC4(TPFIELD,KNCID,KVARID,HCALENDAR)
 !
-TYPE(TFIELDDATA),      INTENT(IN)   :: TPFIELD
-INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KNCID
-INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KVARID
+TYPE(TFIELDDATA),         INTENT(IN) :: TPFIELD
+INTEGER(KIND=IDCDF_KIND), INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND), INTENT(IN) :: KVARID
+CHARACTER(LEN=*),OPTIONAL,INTENT(IN) :: HCALENDAR
 !
 INTEGER(KIND=IDCDF_KIND) :: STATUS
 !
@@ -256,6 +258,13 @@ ELSE
   IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_ATTR_NC4 [NF90_PUT_ATT]')
 ENDIF
 !
+! Calendar (CF convention)
+IF(PRESENT(HCALENDAR)) THEN
+  CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_ATTR_NC4','CALENDAR provided for variable '//TRIM(TPFIELD%CMNHNAME))
+  STATUS = NF90_PUT_ATT(KNCID, KVARID,'calendar', TRIM(HCALENDAR))
+  IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_ATTR_NC4 [NF90_PUT_ATT]')
+ENDIF
+!
 END SUBROUTINE IO_WRITE_FIELD_ATTR_NC4
 
 FUNCTION GETDIMCDF(PIOCDF, KLEN, HDIMNAME)
@@ -459,9 +468,6 @@ END SUBROUTINE NCWRITX0
 
 SUBROUTINE IO_WRITE_FIELD_NC4_X0(TPFILE,TPFIELD,PZCDF,PFIELD,KRESP)
 !
-USE MODD_FM, ONLY : FMHEADER
-USE MODD_PARAMETERS_ll,  ONLY : JPVEXT
-!
 TYPE(TFILEDATA),       INTENT(IN) :: TPFILE
 TYPE(TFIELDDATA),      INTENT(IN) :: TPFIELD
 TYPE(IOCDF), POINTER              :: PZCDF
@@ -549,9 +555,6 @@ END SUBROUTINE NCWRITX1
 
 SUBROUTINE IO_WRITE_FIELD_NC4_X1(TPFILE,TPFIELD,PZCDF,PFIELD,KRESP)
 !
-USE MODD_FM, ONLY : FMHEADER
-USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME
-!
 TYPE(TFILEDATA),TARGET,INTENT(IN) :: TPFILE
 TYPE(TFIELDDATA),      INTENT(IN) :: TPFIELD
 TYPE(IOCDF), POINTER              :: PZCDF
@@ -657,7 +660,6 @@ END SUBROUTINE NCWRITX2
 
 SUBROUTINE IO_WRITE_FIELD_NC4_X2(TPFILE,TPFIELD,PZCDF,PFIELD,KRESP,KVERTLEVEL,KZFILE)
 !
-USE MODD_FM, ONLY : FMHEADER
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME
 !
 TYPE(TFILEDATA),TARGET,INTENT(IN) :: TPFILE
@@ -790,8 +792,6 @@ END SUBROUTINE NCWRITX3
 
 SUBROUTINE IO_WRITE_FIELD_NC4_X3(TPFILE,TPFIELD,PZCDF,PFIELD,KRESP)
 !
-USE MODD_FM, ONLY : FMHEADER
-!
 TYPE(TFILEDATA),       INTENT(IN) :: TPFILE
 TYPE(TFIELDDATA),      INTENT(IN) :: TPFIELD
 TYPE(IOCDF), POINTER              :: PZCDF
@@ -1050,7 +1050,6 @@ END SUBROUTINE NCWRITN0
 
 SUBROUTINE IO_WRITE_FIELD_NC4_N0(TPFILE,TPFIELD,PZCDF,KFIELD,KRESP)
 !
-USE MODD_FM, ONLY : FMHEADER
 USE MODD_PARAMETERS_ll,  ONLY : JPVEXT
 #if 0
 USE MODD_PARAMETERS_ll,  ONLY : JPHEXT, JPVEXT
@@ -1267,8 +1266,6 @@ END SUBROUTINE NCWRITC0
 
 SUBROUTINE IO_WRITE_FIELD_NC4_C0(TPFILE,TPFIELD,PZCDF,HFIELD,KRESP)
 !
-USE MODD_FM, ONLY : FMHEADER
-!
 TYPE(TFILEDATA),       INTENT(IN) :: TPFILE
 TYPE(TFIELDDATA),      INTENT(IN) :: TPFIELD
 TYPE(IOCDF), POINTER              :: PZCDF
@@ -1378,6 +1375,126 @@ IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITC1[NF90_PUT_VAR
 KRESP = IRESP
 END SUBROUTINE NCWRITC1
 
+SUBROUTINE IO_WRITE_FIELD_NC4_T0(TPFILE,TPFIELD,PZCDF,TPDATA,KRESP)
+!
+USE MODD_TYPE_DATE
+!
+TYPE(TFILEDATA),       INTENT(IN) :: TPFILE
+TYPE(TFIELDDATA),      INTENT(IN) :: TPFIELD
+TYPE(IOCDF), POINTER              :: PZCDF
+TYPE (DATE_TIME),      INTENT(IN) :: TPDATA
+INTEGER,               INTENT(OUT):: KRESP
+!
+INTEGER(KIND=IDCDF_KIND)               :: STATUS
+INTEGER(KIND=IDCDF_KIND)               :: INCID
+CHARACTER(LEN=LEN(TPFIELD%CMNHNAME))   :: YVARNAME
+INTEGER(KIND=IDCDF_KIND)               :: IVARID
+INTEGER(KIND=IDCDF_KIND), DIMENSION(1) :: IVDIMS
+INTEGER                                :: IRESP
+INTEGER, DIMENSION(3)                  :: ITDATE    ! date array
+TYPE(TFIELDDATA)                       :: TZFIELD
+CHARACTER(LEN=40)                      :: YUNITS
+!
+CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_NC4_T0','writing '//TRIM(TPFIELD%CMNHNAME))
+!
+IRESP = 0
+!
+TZFIELD = TPFIELD
+!
+ITDATE(1)=TPDATA%TDATE%YEAR
+ITDATE(2)=TPDATA%TDATE%MONTH
+ITDATE(3)=TPDATA%TDATE%DAY
+!
+! Get the Netcdf file ID
+INCID = TPFILE%NNCID
+!
+! NetCDF var names can't contain '%' nor '.' 
+YVARNAME = str_replace(TRIM(TPFIELD%CMNHNAME), '%', '__')
+YVARNAME = str_replace(YVARNAME, '.', '--')
+!
+TZFIELD%CMNHNAME = TRIM(YVARNAME)
+WRITE(YUNITS,'( "seconds since ",I4.4,"-",I2.2,"-",I2.2," 00:00:00 +0:00" )') ITDATE(1),ITDATE(2),ITDATE(3)
+TZFIELD%CUNITS = TRIM(YUNITS)
+
+! The variable should not already exist but who knows ?
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   ! Define the scalar variable 
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_DOUBLE, IVARID)
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_T0[NF90_DEF_VAR]')
+   CALL IO_WRITE_FIELD_ATTR_NC4(TZFIELD,INCID,IVARID,HCALENDAR='standard')
+ELSE
+   CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_T0',TRIM(YVARNAME)//' already defined')
+END IF
+
+! Write the data
+STATUS = NF90_PUT_VAR(INCID, IVARID, TPDATA%TIME)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_X0[NF90_PUT_VAR] '//TRIM(TPFIELD%CMNHNAME),IRESP)
+
+IF (IRESP/=0) THEN
+  KRESP = IRESP
+  RETURN
+END IF
+
+#if 1
+!This part is to keep backward compatibility with MesoNH files
+!but date/time is not conform to CF convention
+!
+! Write date
+!
+TZFIELD%CMNHNAME  = TRIM(YVARNAME)//'__TDATE'
+TZFIELD%CLONGNAME = TRIM(TPFIELD%CLONGNAME)//'%TDATE'
+TZFIELD%CUNITS    = ''
+TZFIELD%CCOMMENT  = 'YYYYMMDD'
+
+! The variable should not already exist but who knows ?
+STATUS = NF90_INQ_VARID(INCID, TZFIELD%CMNHNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   ! Get the netcdf dimensions
+   CALL FILLVDIMS(PZCDF, INT(SHAPE(ITDATE),KIND=IDCDF_KIND), TPFIELD%CDIR, IVDIMS)
+
+   ! Define the variable 
+   STATUS = NF90_DEF_VAR(INCID, TZFIELD%CMNHNAME, NF90_INT, IVDIMS, IVARID)
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_T0[NF90_DEF_VAR]')
+   CALL IO_WRITE_FIELD_ATTR_NC4(TZFIELD,INCID,IVARID)
+ELSE
+   CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_T0',TRIM(TZFIELD%CMNHNAME)//' already defined')
+END IF
+
+! Write the data
+STATUS = NF90_PUT_VAR(INCID, IVARID, ITDATE)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_T0[NF90_PUT_VAR] '//TRIM(TZFIELD%CMNHNAME),IRESP)
+ 
+IF (IRESP/=0) THEN
+  KRESP = IRESP
+  RETURN
+END IF
+!
+! Write time
+!
+TZFIELD%CMNHNAME  = TRIM(YVARNAME)//'__TIME'
+TZFIELD%CLONGNAME = TRIM(TPFIELD%CLONGNAME)//'%TIME'
+TZFIELD%CUNITS    = 's'
+TZFIELD%CCOMMENT  = 'SECONDS'
+
+! The variable should not already exist but who knows ?
+STATUS = NF90_INQ_VARID(INCID, TZFIELD%CMNHNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   ! Define the scalar variable 
+   STATUS = NF90_DEF_VAR(INCID, TZFIELD%CMNHNAME, NF90_DOUBLE, IVARID)
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_T0[NF90_DEF_VAR]')
+   CALL IO_WRITE_FIELD_ATTR_NC4(TZFIELD,INCID,IVARID)
+ELSE
+   CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_T0',TRIM(TZFIELD%CMNHNAME)//' already defined')
+END IF
+
+! Write the data
+STATUS = NF90_PUT_VAR(INCID, IVARID, TPDATA%TIME)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_T0[NF90_PUT_VAR] '//TRIM(TZFIELD%CMNHNAME),IRESP)
+#endif
+
+KRESP = IRESP
+END SUBROUTINE IO_WRITE_FIELD_NC4_T0
 !
 !
 ! Here come the NetCDF READ routines