From 8c2d6f61f1eb89dfbfa18774fd4190d37f981af8 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Fri, 18 Dec 2020 09:23:54 +0100
Subject: [PATCH] Philippe 18/12/2020: restructure type date_time

---
 LIBTOOLS/tools/lfi2cdf/src/mode_util.f90     | 10 +--
 src/LIB/SURCOUCHE/src/mode_io_field_read.f90 | 14 ++--
 src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90   |  8 +-
 src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90   | 10 +--
 src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90  | 16 ++--
 src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90  | 36 ++++-----
 src/MNH/adv_forcingn.f90                     |  8 +-
 src/MNH/advec_ppm_algo.f90                   | 11 +--
 src/MNH/aerozon.f90                          | 22 +++---
 src/MNH/aircraft_balloon_evol.f90            | 36 ++++-----
 src/MNH/ch_monitorn.f90                      | 34 ++++-----
 src/MNH/compute_r00.f90                      |  6 +-
 src/MNH/diag.f90                             | 12 +--
 src/MNH/flash_geom_elec.f90                  |  2 +-
 src/MNH/forcing.f90                          |  8 +-
 src/MNH/ground_paramn.f90                    | 30 ++++----
 src/MNH/ini_aircraft.f90                     | 80 ++++++++++----------
 src/MNH/ini_balloon.f90                      | 65 ++++++++--------
 src/MNH/ini_modeln.f90                       |  6 +-
 src/MNH/ini_radiations.f90                   | 14 ++--
 src/MNH/ini_radiations_ecmwf.f90             | 14 ++--
 src/MNH/init_ground_paramn.f90               | 16 ++--
 src/MNH/mnh2lpdm_ech.f90                     | 10 +--
 src/MNH/mnh2lpdm_ini.f90                     | 36 ++++-----
 src/MNH/modd_type_date.f90                   | 34 ++++-----
 src/MNH/mode_datetime.f90                    | 54 ++++++-------
 src/MNH/mode_les_diachro.f90                 | 16 ++--
 src/MNH/mode_time.f90                        | 18 ++---
 src/MNH/modeln.f90                           |  2 +-
 src/MNH/paspol.f90                           | 12 +--
 src/MNH/phys_paramn.f90                      |  2 +-
 src/MNH/prep_ideal_case.f90                  |  8 +-
 src/MNH/prep_surf_mnh.f90                    |  7 +-
 src/MNH/prep_surfex.f90                      |  8 +-
 src/MNH/profilern.f90                        |  4 +-
 src/MNH/read_all_data_grib_case.f90          | 32 ++++----
 src/MNH/read_surf_mnh.f90                    | 10 +--
 src/MNH/rel_forcingn.f90                     |  8 +-
 src/MNH/resolved_elecn.f90                   | 18 ++---
 src/MNH/set_advfrc.f90                       | 34 ++++-----
 src/MNH/set_frc.f90                          | 42 +++++-----
 src/MNH/set_relfrc.f90                       | 34 ++++-----
 src/MNH/spawn_surf.f90                       |  7 +-
 src/MNH/stationn.f90                         |  4 +-
 src/MNH/sunposn.f90                          | 11 +--
 src/MNH/write_budget.f90                     | 24 +++---
 src/MNH/write_diachro.f90                    | 32 ++++----
 src/MNH/write_lfifm1_for_diag_supp.f90       | 12 +--
 src/MNH/write_surf_mnh.f90                   |  8 +-
 src/MNH/write_ts1d.f90                       | 14 ++--
 50 files changed, 470 insertions(+), 489 deletions(-)

diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
index 4337a8d8f..5bca2401c 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
@@ -1174,7 +1174,7 @@ END DO
        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 )
+         istatus = NF90_GET_VAR( infiles(1)%tfile%nncid, ivar_id, tdtcur%xtime )
          if ( istatus == NF90_NOERR ) then
            istatus = NF90_INQUIRE_ATTRIBUTE( infiles(1)%tfile%nncid, ivar_id, 'units', len = ilen )
            if ( istatus == NF90_NOERR ) then
@@ -1182,14 +1182,14 @@ END DO
              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
+             Read( yunits(idx+6 :idx+9 ) , '( I4.4 )' ) tdtcur%nyear
+             Read( yunits(idx+11:idx+12 ), '( I2.2 )' ) tdtcur%nmonth
+             Read( yunits(idx+14:idx+15 ), '( I2.2 )' ) tdtcur%nday
 
              if ( .not. associated( tdtmod ) ) then
                allocate( tdtmod )
                tdtmod = tdtcur
-               tdtmod%time = 0.
+               tdtmod%xtime = 0.
              end if
 
              gok = .true.
diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
index c7a390305..15bb499d2 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
@@ -2058,9 +2058,9 @@ IF (IRESP==0) THEN
     IF (ISP == TPFILE%NMASTER_RANK)  THEN
       if ( gnc4 ) call IO_Field_read_nc4( tpfile, tpfield, tpdata, iresp )
       if ( glfi ) call IO_Field_read_lfi( tpfile, tpfield, tpdata, iresp )
-      ITDATE(1) = TPDATA%TDATE%YEAR
-      ITDATE(2) = TPDATA%TDATE%MONTH
-      ITDATE(3) = TPDATA%TDATE%DAY
+      ITDATE(1) = TPDATA%nyear
+      ITDATE(2) = TPDATA%nmonth
+      ITDATE(3) = TPDATA%nday
     END IF
     !
     CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -2070,10 +2070,10 @@ IF (IRESP==0) THEN
     IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD)
     !
     CALL MPI_BCAST( ITDATE,      3, MNHINT_MPI,  TPFILE%NMASTER_RANK-1, TPFILE%NMPICOMM, IERR )
-    CALL MPI_BCAST( TPDATA%TIME, 1, MNHREAL_MPI, TPFILE%NMASTER_RANK-1, TPFILE%NMPICOMM, IERR )
-    TPDATA%TDATE%YEAR  = ITDATE(1)
-    TPDATA%TDATE%MONTH = ITDATE(2)
-    TPDATA%TDATE%DAY   = ITDATE(3)
+    CALL MPI_BCAST( TPDATA%xtime, 1, MNHREAL_MPI, TPFILE%NMASTER_RANK-1, TPFILE%NMPICOMM, IERR )
+    TPDATA%nyear  = ITDATE(1)
+    TPDATA%nmonth = ITDATE(2)
+    TPDATA%nday   = ITDATE(3)
   END IF
 END IF
 !
diff --git a/src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90 b/src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90
index 6d2990d35..1e704e935 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_read_lfi.f90
@@ -610,9 +610,9 @@ ILENG=SIZE(ITDATE)
 CALL IO_Field_read_check_lfi(TPFILE,TZFIELD,ILENG,IWORK,ITOTAL,IRESP,GGOOD)
 !
 IF (GGOOD) THEN
-  TPDATA%TDATE%YEAR  = IWORK(IWORK(2)+2+1)
-  TPDATA%TDATE%MONTH = IWORK(IWORK(2)+2+2)
-  TPDATA%TDATE%DAY   = IWORK(IWORK(2)+2+3)
+  TPDATA%nyear  = IWORK(IWORK(2)+2+1)
+  TPDATA%nmonth = IWORK(IWORK(2)+2+2)
+  TPDATA%nday   = IWORK(IWORK(2)+2+3)
 END IF
 !
 IF (ALLOCATED(IWORK)) DEALLOCATE(IWORK)
@@ -634,7 +634,7 @@ CALL IO_Field_read_check_lfi(TPFILE,TZFIELD,ILENG,IWORK,ITOTAL,IRESP,GGOOD)
 IF (GGOOD) THEN
   !TRANSFER_I8_R works with 1D arrays
   ZTIME = TRANSFER_I8_R( (/ IWORK(IWORK(2)+3) /) )
-  TPDATA%TIME = ZTIME(1)
+  TPDATA%xtime = ZTIME(1)
 END IF
 !
 IF (ALLOCATED(IWORK)) DEALLOCATE(IWORK)
diff --git a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90
index c81a2edb7..1984e4cce 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90
@@ -1302,7 +1302,7 @@ IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_T0'
 
 IF (IDIMS == 0 .AND. (ITYPE == NF90_FLOAT .OR. ITYPE == NF90_DOUBLE) ) THEN
   ! Read time
-  istatus = NF90_GET_VAR(INCID, IVARID, TPDATA%TIME)
+  istatus = NF90_GET_VAR(INCID, IVARID, TPDATA%xtime)
   IF (istatus /= NF90_NOERR) THEN
     CALL IO_Err_handle_nc4(istatus,'IO_Field_read_nc4_T0','NF90_GET_VAR',TRIM(YVARNAME),IRESP)
     GOTO 1000
@@ -1311,11 +1311,11 @@ IF (IDIMS == 0 .AND. (ITYPE == NF90_FLOAT .OR. ITYPE == NF90_DOUBLE) ) THEN
   CALL IO_Field_attr_read_check_nc4(TPFILE,TPFIELD,IVARID,IRESP,HCALENDAR='standard')
   ! Extract date from UNITS
   IDX =  INDEX(TPFIELD%CUNITS,'since ')
-  READ(TPFIELD%CUNITS(IDX+6 :IDX+9), '( I4.4 )') TPDATA%TDATE%YEAR
-  READ(TPFIELD%CUNITS(IDX+11:IDX+12),'( I2.2 )') TPDATA%TDATE%MONTH
-  READ(TPFIELD%CUNITS(IDX+14:IDX+15),'( I2.2 )') TPDATA%TDATE%DAY
+  READ(TPFIELD%CUNITS(IDX+6 :IDX+9), '( I4.4 )') TPDATA%nyear
+  READ(TPFIELD%CUNITS(IDX+11:IDX+12),'( I2.2 )') TPDATA%nmonth
+  READ(TPFIELD%CUNITS(IDX+14:IDX+15),'( I2.2 )') TPDATA%nday
   ! Simple check (should catch most errors)
-  IF ( TPDATA%TDATE%DAY<1 .OR. TPDATA%TDATE%DAY>31 .OR. TPDATA%TDATE%MONTH<1 .OR. TPDATA%TDATE%MONTH>12 ) THEN
+  IF ( TPDATA%nday<1 .OR. TPDATA%nday>31 .OR. TPDATA%nmonth<1 .OR. TPDATA%nmonth>12 ) THEN
     CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Field_read_nc4_T0',TRIM(TPFILE%CNAME)//': '//TRIM(YVARNAME)// &
                                                            ' read date is invalid')
     IRESP = -3
diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90
index 7f5f2ce22..1508b1cf3 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90
@@ -736,9 +736,9 @@ TZFIELD = TPFIELD
 !
 TZFIELD%CMNHNAME = TRIM(TPFIELD%CMNHNAME)//'%TDATE'
 TZFIELD%CCOMMENT = 'YYYYMMDD'
-ITDATE(1)=TPDATA%TDATE%YEAR
-ITDATE(2)=TPDATA%TDATE%MONTH
-ITDATE(3)=TPDATA%TDATE%DAY
+ITDATE(1)=TPDATA%nyear
+ITDATE(2)=TPDATA%nmonth
+ITDATE(3)=TPDATA%nday
 ILENG=SIZE(ITDATE)
 !
 CALL WRITE_PREPARE(TZFIELD,ILENG,IWORK,ITOTAL,IRESP)
@@ -768,7 +768,7 @@ ILENG=1
 CALL WRITE_PREPARE(TZFIELD,ILENG,IWORK,ITOTAL,IRESP)
 !
 IF (IRESP==0) THEN
-  IWORK(LEN(TZFIELD%CCOMMENT)+3) = TRANSFER(TPDATA%TIME,IWORK(1))
+  IWORK(LEN(TZFIELD%CCOMMENT)+3) = TRANSFER(TPDATA%xtime,IWORK(1))
   YRECFM=TRIM(TZFIELD%CMNHNAME)
   IF( LEN_TRIM(TZFIELD%CMNHNAME) > LEN(YRECFM) ) &
     CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_write_lfi_T0','field name was truncated to '&
@@ -826,9 +826,9 @@ TZFIELD%CCOMMENT = 'YYYYMMDD'
 !
 DO JI = 1, SIZE( TPDATA )
   IPOS = 1 + 3 * ( JI - 1 )
-  ITDATE(IPOS )     = TPDATA(JI)%TDATE%YEAR
-  ITDATE(IPOS + 1 ) = TPDATA(JI)%TDATE%MONTH
-  ITDATE(IPOS + 2 ) = TPDATA(JI)%TDATE%DAY
+  ITDATE(IPOS )     = TPDATA(JI)%nyear
+  ITDATE(IPOS + 1 ) = TPDATA(JI)%nmonth
+  ITDATE(IPOS + 2 ) = TPDATA(JI)%nday
 END DO
 !
 CALL WRITE_PREPARE(TZFIELD,ILENG,IWORK,ITOTAL,IRESP)
@@ -858,7 +858,7 @@ ILENG = SIZE( TPDATA )
 CALL WRITE_PREPARE(TZFIELD,ILENG,IWORK,ITOTAL,IRESP)
 !
 IF (IRESP==0) THEN
-  CALL TRANSFER_R_I8(TPDATA(:)%TIME,IWORK(LEN(TPFIELD%CCOMMENT)+3:))
+  CALL TRANSFER_R_I8(TPDATA(:)%xtime,IWORK(LEN(TPFIELD%CCOMMENT)+3:))
   YRECFM=TRIM(TZFIELD%CMNHNAME)
   IF( LEN_TRIM(TZFIELD%CMNHNAME) > LEN(YRECFM) ) &
     CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_write_lfi_T1','field name was truncated to '&
diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
index 2b1d3f203..c693aa11f 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
@@ -972,16 +972,16 @@ TZFIELD = TPFIELD
 IF (.NOT.ASSOCIATED(TDTMOD)) THEN
   CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_write_nc4_T0',TRIM(TPFILE%CNAME)// &
                  ': '//TRIM(TZFIELD%CMNHNAME)//': DTMOD is not associated and not known. Reference date set to 2000/01/01')
-  TZREF%TDATE%YEAR  = 2000
-  TZREF%TDATE%MONTH = 1
-  TZREF%TDATE%DAY   = 1
-  TZREF%TIME        = 0.
+  TZREF%nyear  = 2000
+  TZREF%nmonth = 1
+  TZREF%nday   = 1
+  TZREF%xtime  = 0.
 ELSE
   TZREF = TDTMOD
-  TZREF%TIME = 0.
+  TZREF%xtime = 0.
 END IF
 WRITE(YUNITS,'( "seconds since ",I4.4,"-",I2.2,"-",I2.2," 00:00:00 +0:00" )') &
-      TZREF%TDATE%YEAR, TZREF%TDATE%MONTH, TZREF%TDATE%DAY
+      TZREF%nyear, TZREF%nmonth, TZREF%nday
 TZFIELD%CUNITS = TRIM(YUNITS)
 !
 call IO_Field_create_nc4( tpfile, tzfield, kvarid = ivarid, hcalendar = 'standard' )
@@ -1027,16 +1027,16 @@ TZFIELD = TPFIELD
 IF (.NOT.ASSOCIATED(TDTMOD)) THEN
   CALL PRINT_MSG(NVERB_WARNING,'IO','IO_Field_write_nc4_T1',TRIM(TPFILE%CNAME)// &
                  ': '//TRIM(TZFIELD%CMNHNAME)//': DTMOD is not associated and not known. Reference date set to 2000/01/01')
-  TZREF%TDATE%YEAR  = 2000
-  TZREF%TDATE%MONTH = 1
-  TZREF%TDATE%DAY   = 1
-  TZREF%TIME        = 0.
+  TZREF%nyear  = 2000
+  TZREF%nmonth = 1
+  TZREF%nday   = 1
+  TZREF%xtime  = 0.
 ELSE
   TZREF = TDTMOD
-  TZREF%TIME = 0.
+  TZREF%xtime = 0.
 END IF
 WRITE(YUNITS,'( "seconds since ",I4.4,"-",I2.2,"-",I2.2," 00:00:00 +0:00" )') &
-      TZREF%TDATE%YEAR, TZREF%TDATE%MONTH, TZREF%TDATE%DAY
+      TZREF%nyear, TZREF%nmonth, TZREF%nday
 TZFIELD%CUNITS = TRIM(YUNITS)
 !
 call IO_Field_create_nc4( tpfile, tzfield, kshape = Shape( tpdata), kvarid = ivarid, hcalendar = 'standard' )
@@ -1705,12 +1705,12 @@ subroutine Write_time_coord( tdim, tpdates, tpdates_bound )
     ! Model beginning date (tdtmod%tdate) is used as the reference date
     ! Reference time is set to 0.
     tzref = tdtmod
-    tzref%time = 0.
+    tzref%xtime = 0.
   else
-    tzref%tdate%year  = 2000
-    tzref%tdate%month = 1
-    tzref%tdate%day   = 1
-    tzref%time        = 0.
+    tzref%nyear  = 2000
+    tzref%nmonth = 1
+    tzref%nday   = 1
+    tzref%xtime  = 0.
   end if
 
   yvarname = Trim( tdim%cname )
@@ -1733,7 +1733,7 @@ subroutine Write_time_coord( tdim, tpdates, tpdates_bound )
   IF ( istatus /= NF90_NOERR ) &
     call IO_Err_handle_nc4( istatus, 'Write_time_coord', 'NF90_PUT_ATT', 'standard_name for ' // Trim( yvarname ) )
   Write( yunits, '( "seconds since ", i4.4, "-", i2.2, "-", i2.2, " 00:00:00 +0:00" )' ) &
-         tzref%tdate%year, tzref%tdate%month, tzref%tdate%day
+         tzref%nyear, tzref%nmonth, tzref%nday
   istatus = NF90_PUT_ATT( incid, ivarid, 'units', yunits )
   if ( istatus /= NF90_NOERR ) &
     call IO_Err_handle_nc4( istatus, 'Write_time_coord', 'NF90_PUT_ATT', 'units for ' // Trim( yvarname ) )
diff --git a/src/MNH/adv_forcingn.f90 b/src/MNH/adv_forcingn.f90
index 4c41fa783..963f453dc 100644
--- a/src/MNH/adv_forcingn.f90
+++ b/src/MNH/adv_forcingn.f90
@@ -161,10 +161,10 @@ IF (GSFIRSTCALL) THEN
   WRITE(UNIT=ILUOUT0,FMT='(" THERE ARE ",I2," ADV FORCING FIELDs  AT:")') NADVFRC
   DO JSX_ADV = 1 , NADVFRC
     WRITE(UNIT=ILUOUT0,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') &
-      TDTADVFRC(JSX_ADV)%TIME,        &
-      TDTADVFRC(JSX_ADV)%TDATE%DAY,   &
-      TDTADVFRC(JSX_ADV)%TDATE%MONTH, &
-      TDTADVFRC(JSX_ADV)%TDATE%YEAR
+      TDTADVFRC(JSX_ADV)%xtime,  &
+      TDTADVFRC(JSX_ADV)%nday,   &
+      TDTADVFRC(JSX_ADV)%nmonth, &
+      TDTADVFRC(JSX_ADV)%nyear
   END DO
 
 !*        1.2  find first sounding to be used 
diff --git a/src/MNH/advec_ppm_algo.f90 b/src/MNH/advec_ppm_algo.f90
index b7eb4415f..b538a305d 100644
--- a/src/MNH/advec_ppm_algo.f90
+++ b/src/MNH/advec_ppm_algo.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2007-2020 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 adiab 2007/03/27 10:07:52
-!-----------------------------------------------------------------
 !     ##########################
       MODULE MODI_ADVEC_PPM_ALGO
 !     ##########################
@@ -125,7 +120,7 @@ LOGICAL  :: GFLAG   ! Logical flag
 !               ------------
 !
 PSRC = PFIELDT
-GFLAG = ABS(MOD(TPDTCUR%TIME/PTSTEP,2.)-1.) .LE. 0.5 
+GFLAG = ABS(MOD(TPDTCUR%xtime/PTSTEP,2.)-1.) .LE. 0.5
 !
 SELECT CASE (HMET_ADV_SCHEME)
 !
diff --git a/src/MNH/aerozon.f90 b/src/MNH/aerozon.f90
index 190ff0298..b2e6b6c9f 100644
--- a/src/MNH/aerozon.f90
+++ b/src/MNH/aerozon.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 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 for details. version 1.
@@ -273,19 +273,19 @@ DO JI=1,11
 END DO
 !
 IF ( LFIX_DAT ) THEN 
-  IF( MOD(TPDTEXP%TDATE%YEAR,4).EQ.0 ) THEN
-    ZDATE = REAL(TPDTEXP%TDATE%DAY +   IBIS(TPDTEXP%TDATE%MONTH-1)) - 1
+  IF( MOD(TPDTEXP%nyear,4).EQ.0 ) THEN
+    ZDATE = REAL(TPDTEXP%nday +   IBIS(TPDTEXP%nmonth-1)) - 1
     ZAD = 2.0*XPI*ZDATE/366.0
   ELSE
-    ZDATE = REAL(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1
+    ZDATE = REAL(TPDTEXP%nday + INOBIS(TPDTEXP%nmonth-1)) - 1
     ZAD = 2.0*XPI*ZDATE/365.0
   END IF
 ELSE
-  IF( MOD(TPDTCUR%TDATE%YEAR,4).EQ.0 ) THEN
-    ZDATE = REAL(TPDTCUR%TDATE%DAY +   IBIS(TPDTCUR%TDATE%MONTH-1)) - 1
+  IF( MOD(TPDTCUR%nyear,4).EQ.0 ) THEN
+    ZDATE = REAL(TPDTCUR%nday +   IBIS(TPDTCUR%nmonth-1)) - 1
     ZAD = 2.0*XPI*ZDATE/366.0
   ELSE
-    ZDATE = REAL(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1
+    ZDATE = REAL(TPDTCUR%nday + INOBIS(TPDTCUR%nmonth-1)) - 1
     ZAD = 2.0*XPI*ZDATE/365.0
   END IF
 END IF 
@@ -404,11 +404,11 @@ END IF
 ALLOCATE (ZOZON(KDLON,KFLEV))
 !
 IF (LFIX_DAT ) THEN 
-  ZYMD = TPDTEXP%TDATE%YEAR * 1E4 + TPDTEXP%TDATE%MONTH * 1E2 + TPDTEXP%TDATE%DAY
-  ZHOURS = INT(TPDTCUR%TIME / 60.)
+  ZYMD = TPDTEXP%nyear * 1E4 + TPDTEXP%nmonth * 1E2 + TPDTEXP%nday
+  ZHOURS = INT(TPDTCUR%xtime / 60.)
 ELSE
-  ZYMD = TPDTCUR%TDATE%YEAR * 1E4 + TPDTCUR%TDATE%MONTH * 1E2 + TPDTCUR%TDATE%DAY
-  ZHOURS = INT(TPDTCUR%TIME / 60.)
+  ZYMD = TPDTCUR%nyear * 1E4 + TPDTCUR%nmonth * 1E2 + TPDTCUR%nday
+  ZHOURS = INT(TPDTCUR%xtime / 60.)
 END IF 
 !
 ! Fortuin langematz climatology loading
diff --git a/src/MNH/aircraft_balloon_evol.f90 b/src/MNH/aircraft_balloon_evol.f90
index f4a3dd5d2..f16bad660 100644
--- a/src/MNH/aircraft_balloon_evol.f90
+++ b/src/MNH/aircraft_balloon_evol.f90
@@ -436,9 +436,9 @@ IF (.NOT. TPFLYER%FLY) THEN
         TPFLYER%CRASH=.FALSE.
         IF (ZTDIST <= PTSTEP ) THEN
           WRITE(ILUOUT,*) '-------------------------------------------------------------------'
-          WRITE(ILUOUT,*) 'Aircraft ',TPFLYER%TITLE,' takes off the   ',      &
-                      TDTCUR%TDATE%DAY,'/',TDTCUR%TDATE%MONTH,'/',      &
-                      TDTCUR%TDATE%YEAR,' at ',NINT(TDTCUR%TIME),' sec.'
+          WRITE(ILUOUT,*) 'Aircraft ',TPFLYER%TITLE,' takes off the   ', &
+                      TDTCUR%nday,'/',TDTCUR%nmonth,'/',                 &
+                      TDTCUR%nyear,' at ',NINT(TDTCUR%xtime),' sec.'
           WRITE(ILUOUT,*) '-------------------------------------------------------------------'
         ENDIF
       ENDIF
@@ -446,9 +446,9 @@ IF (.NOT. TPFLYER%FLY) THEN
       TPFLYER%FLY = .TRUE.
       GLAUNCH     = .TRUE.
       WRITE(ILUOUT,*) '-------------------------------------------------------------------'
-      WRITE(ILUOUT,*) 'Balloon  ',TPFLYER%TITLE,' is launched the ',      &
-                    TDTCUR%TDATE%DAY,'/',TDTCUR%TDATE%MONTH,'/',      &
-                    TDTCUR%TDATE%YEAR,' at ',NINT(TDTCUR%TIME),' sec.'
+      WRITE(ILUOUT,*) 'Balloon  ',TPFLYER%TITLE,' is launched the ', &
+                    TDTCUR%nday,'/',TDTCUR%nmonth,'/',               &
+                    TDTCUR%nyear,' at ',NINT(TDTCUR%xtime),' sec.'
       WRITE(ILUOUT,*) '-------------------------------------------------------------------'
     END IF
 !
@@ -494,10 +494,10 @@ END IF
 IF (GSTORE) THEN
   IN = TPFLYER%N_CUR
 #if 0
-  tpflyer%tpdates(in)%date%year  = tdtexp%date%year
-  tpflyer%tpdates(in)%date%month = tdtexp%date%month
-  tpflyer%tpdates(in)%date%day   = tdtexp%date%day
-  tpflyer%tpdates(in)%time       = tdtexp%time + ( in - 1 ) * tpflyer%step
+  tpflyer%tpdates(in)%nyear  = tdtexp%nyear
+  tpflyer%tpdates(in)%nmonth = tdtexp%nmonth
+  tpflyer%tpdates(in)%nday   = tdtexp%nday
+  tpflyer%tpdates(in)%xtime  = tdtexp%xtime + ( in - 1 ) * tpflyer%step
 #else
   tpflyer%tpdates(in) = tdtcur
 #endif
@@ -809,19 +809,19 @@ IF ( TPFLYER%FLY) THEN
     TPFLYER%FLY = .FALSE.
     IF (TPFLYER%TYPE=='AIRCRA' .AND. .NOT. GLAUNCH ) THEN
       WRITE(ILUOUT,*) 'Aircraft ',TPFLYER%TITLE,' flew out of the domain the ', &
-                    TDTCUR%TDATE%DAY,'/',TDTCUR%TDATE%MONTH,'/',            &
-                    TDTCUR%TDATE%YEAR,' at ',TDTCUR%TIME,' sec.'
+                    TDTCUR%nday,'/',TDTCUR%nmonth,'/',                          &
+                    TDTCUR%nyear,' at ',TDTCUR%xtime,' sec.'
     ELSE IF (TPFLYER%TYPE /= 'AIRCRA') THEN
       WRITE(ILUOUT,*) 'Balloon ',TPFLYER%TITLE,' crashed the ',                 &
-                    TDTCUR%TDATE%DAY,'/',TDTCUR%TDATE%MONTH,'/',            &
-                    TDTCUR%TDATE%YEAR,' at ',TDTCUR%TIME,' sec.'
+                    TDTCUR%nday,'/',TDTCUR%nmonth,'/',                          &
+                    TDTCUR%nyear,' at ',TDTCUR%xtime,' sec.'
     END IF
   ELSE
     IF (TPFLYER%TYPE=='AIRCRA' .AND. .NOT. GLAUNCH .AND. ZTDIST > PTSTEP ) THEN
       WRITE(ILUOUT,*) '-------------------------------------------------------------------'
       WRITE(ILUOUT,*) 'Aircraft ',TPFLYER%TITLE,' flies  in leg',TPFLYER%SEGCURN ,' the ',  &
-        TDTCUR%TDATE%DAY,'/',TDTCUR%TDATE%MONTH,'/',      &
-        TDTCUR%TDATE%YEAR,' at ',NINT(TDTCUR%TIME),' sec.'
+        TDTCUR%nday,'/',TDTCUR%nmonth,'/',      &
+        TDTCUR%nyear,' at ',NINT(TDTCUR%xtime),' sec.'
       WRITE(ILUOUT,*) '-------------------------------------------------------------------'
     ENDIF
 !
@@ -1688,12 +1688,12 @@ IF (TPFLYER%NMODEL /= IMODEL) THEN
    IF (NDAD(IMODEL) == TPFLYER%NMODEL) THEN
       WRITE(ILUOUT,*) '-------------------------------------------------------------------'
       WRITE(ILUOUT,*) TPFLYER%TITLE,' comes from model ',IMODEL,' in  model ',&
-             TPFLYER%NMODEL,' at ',NINT(TDTCUR%TIME),' sec.'
+             TPFLYER%NMODEL,' at ',NINT(TDTCUR%xtime),' sec.'
       WRITE(ILUOUT,*) '-------------------------------------------------------------------'
    ELSE
       WRITE(ILUOUT,*) '-------------------------------------------------------------------'
       WRITE(ILUOUT,*) TPFLYER%TITLE,' goes from model ',IMODEL,' to  model ',&
-             TPFLYER%NMODEL,' at ',NINT(TDTCUR%TIME),' sec.'
+             TPFLYER%NMODEL,' at ',NINT(TDTCUR%xtime),' sec.'
       WRITE(ILUOUT,*) '-------------------------------------------------------------------'
    ENDIF
 ENDIF
diff --git a/src/MNH/ch_monitorn.f90 b/src/MNH/ch_monitorn.f90
index 6d6aa9a79..d1ac4a1a6 100644
--- a/src/MNH/ch_monitorn.f90
+++ b/src/MNH/ch_monitorn.f90
@@ -708,7 +708,7 @@ END IF
 IF (KTCOUNT==1 .OR. &
     (MOD(ISTCOUNT, MAX(1, INT(XCH_TUV_TUPDATE/XTSTEP)) ) .EQ. 0)) THEN
 !
-  WRITE(KLUOUT,*)"TIME call update jvalue: ",TDTCUR%TIME
+  WRITE(KLUOUT,*)"TIME call update jvalue: ",TDTCUR%xtime
 !
   IF (.NOT.ASSOCIATED(XJVALUES)) &
              ALLOCATE(XJVALUES(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),JPJVMAX))
@@ -716,7 +716,7 @@ IF (KTCOUNT==1 .OR. &
   CALL CH_UPDATE_JVALUES(KLUOUT,  XZENITH, XRT,                  &
        XALBUV, XZS, XZZ, XLAT0, XLON0,                           &
        SIZE(XZZ,1), SIZE(XZZ,2), SIZE(XZZ,3), NRR,               &
-       TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH, TDTCUR%TDATE%YEAR, TDTCUR%TIME,&
+       TDTCUR%nday, TDTCUR%nmonth, TDTCUR%nyear, TDTCUR%xtime,   &
        LCH_TUV_ONLINE,  CCH_TUV_CLOUDS,                          &
        XCH_TUV_ALBNEW, XCH_TUV_DOBNEW, XRHODREF, XJVALUES,       &
        IIB,IIE,IJB,IJE,IIU,IJU, KVERB   )
@@ -732,7 +732,7 @@ ISTCOUNT = ISTCOUNT + 1
 !*       3.1 sedimentation term and wet deposition for aerosols tendency (XSEDA)
 !
 IF (LORILAM) THEN
-  ZTIME  = TDTCUR%TIME ! need for ch_orilam
+  ZTIME  = TDTCUR%xtime ! need for ch_orilam
   XSEDA(:,:,:,:) = 0.
   ZSEDA(:,:) = 0.
 ! dry sedimentation
@@ -995,14 +995,14 @@ DO JL=1,ISVECNMASK
   CASE ('NONE','KESS','ICE3','ICE4')
     IF (GSPLIT) THEN ! LWC and LWR computed from tendencies
       CALL CH_METEO_TRANS_KESS(JL, XRHODJ, XRHODREF, XRRS, XTHT, XPABST, &
-                             ISVECNPT, ISVECMASK, TZM, TDTCUR%TDATE%DAY, &
-                             TDTCUR%TDATE%MONTH, TDTCUR%TDATE%YEAR,      &
+                             ISVECNPT, ISVECMASK, TZM, TDTCUR%nday,      &
+                             TDTCUR%nmonth, TDTCUR%nyear,                &
                              XLAT, XLON, XLAT0, XLON0, LUSERV, LUSERC,   &
                              LUSERR, KLUOUT, CCLOUD, PTSTEP              )
     ELSE 
       CALL CH_METEO_TRANS_KESS(JL, XRHODJ, XRHODREF, XRT, XTHT, XPABST,  &
-                             ISVECNPT, ISVECMASK, TZM, TDTCUR%TDATE%DAY, &
-                             TDTCUR%TDATE%MONTH, TDTCUR%TDATE%YEAR,      &
+                             ISVECNPT, ISVECMASK, TZM, TDTCUR%nday,      &
+                             TDTCUR%nmonth, TDTCUR%nyear,                &
                              XLAT, XLON, XLAT0, XLON0, LUSERV, LUSERC,   &
                              LUSERR, KLUOUT, CCLOUD                      )
     ENDIF
@@ -1011,14 +1011,14 @@ DO JL=1,ISVECNMASK
     IF (GSPLIT) THEN ! LWC and LWR computed from tendencies
       CALL CH_METEO_TRANS_C2R2(JL, XRHODJ, XRHODREF, XRRS, XRSVS(:,:,:,NSV_C2R2BEG+1), &
                              XRSVS(:,:,:,NSV_C2R2BEG+2), XTHT, XPABST, ISVECNPT,       &
-                             ISVECMASK, TZM, TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH,     &
-                             TDTCUR%TDATE%YEAR, XLAT,XLON, XLAT0, XLON0, LUSERV,       &
+                             ISVECMASK, TZM, TDTCUR%nday, TDTCUR%nmonth,               &
+                             TDTCUR%nyear, XLAT,XLON, XLAT0, XLON0, LUSERV,            &
                              LUSERC, LUSERR, KLUOUT, CCLOUD,  PTSTEP                   )
     ELSE 
       CALL CH_METEO_TRANS_C2R2(JL, XRHODJ, XRHODREF, XRT, XSVT(:,:,:,NSV_C2R2BEG+1), &
                              XSVT(:,:,:,NSV_C2R2BEG+2), XTHT, XPABST, ISVECNPT,      &
-                             ISVECMASK, TZM, TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH,   &
-                             TDTCUR%TDATE%YEAR, XLAT,XLON, XLAT0, XLON0, LUSERV,     &
+                             ISVECMASK, TZM, TDTCUR%nday, TDTCUR%nmonth,             &
+                             TDTCUR%nyear, XLAT,XLON, XLAT0, XLON0, LUSERV,          &
                              LUSERC, LUSERR, KLUOUT, CCLOUD                          )
     ENDIF
   END SELECT
@@ -1044,13 +1044,13 @@ DO JL=1,ISVECNMASK
         END DO
     END SELECT
     CALL CH_SET_RATES &
-      (TDTCUR%TIME, ZCHEM, TZM, IMI, KLUOUT, KVERB, ISVECNPT, NEQ, NRRL, ZPH)
+      (TDTCUR%xtime, ZCHEM, TZM, IMI, KLUOUT, KVERB, ISVECNPT, NEQ, NRRL, ZPH)
   ELSE
     CALL CH_SET_RATES &
-      (TDTCUR%TIME, ZCHEM, TZM, IMI, KLUOUT, KVERB, ISVECNPT, NEQ, NRRL)
+      (TDTCUR%xtime, ZCHEM, TZM, IMI, KLUOUT, KVERB, ISVECNPT, NEQ, NRRL)
   ENDIF
 !
-  CALL CH_SET_PHOTO_RATES( TDTCUR%TIME, ZCHEM, JL, TZM, IMI, KLUOUT, KVERB, &
+  CALL CH_SET_PHOTO_RATES( TDTCUR%xtime, ZCHEM, JL, TZM, IMI, KLUOUT, KVERB, &
                            ISVECNPT, ISVECMASK, NEQ, XJVALUES)
 !
 !*       4.4 initialize aerosol parameters and moments of 0th,
@@ -1073,7 +1073,7 @@ DO JL=1,ISVECNMASK
   ZOLDCHEM(:,:) = ZCHEM(:,:)
   DO JM = 1, NCH_SUBSTEPS
     CALL CH_SOLVER_n &
-          (TDTCUR%TIME, ZDTSOLVER, ZCHEM, ZNEWCHEM, NEQ, ISVECNPT, IMI)
+          (TDTCUR%xtime, ZDTSOLVER, ZCHEM, ZNEWCHEM, NEQ, ISVECNPT, IMI)
     ZCHEM(:,:) = MAX(0.0,ZNEWCHEM(:,:))
   END DO
  IF (CSOLVER(1:2)=="RO" .AND. NEQAQ>0) THEN ! aqueous chemistry case rosenbrock solver
@@ -1139,7 +1139,7 @@ DO JL=1,ISVECNMASK
 !               selected species
 !
   IF (NEQ_PLT>0) THEN
-    CALL CH_PRODLOSS(TDTCUR%TIME,ZCHEM,ZPRODTOT,ZLOSSTOT,IMI,ISVECNPT,NEQ)
+    CALL CH_PRODLOSS(TDTCUR%xtime,ZCHEM,ZPRODTOT,ZLOSSTOT,IMI,ISVECNPT,NEQ)
     DO JM=1, NEQ_PLT
       DO JN=1,ISVECNPT
         ZPROD(JN,JM)=ZPRODTOT(JN,NIND_SPEC(JM))
@@ -1153,7 +1153,7 @@ DO JL=1,ISVECNMASK
 !               filter selected species
 !
   IF (NEQ_BUDGET>0) THEN
-        CALL CH_TERMS(TDTCUR%TIME,ZCHEM,ZTCHEMTOT,IMI,ISVECNPT,NEQ,NREAC)
+        CALL CH_TERMS(TDTCUR%xtime,ZCHEM,ZTCHEMTOT,IMI,ISVECNPT,NEQ,NREAC)
         DO JM=1,NEQ_BUDGET
           DO JN=1,ISVECNPT    
             JS=1      
diff --git a/src/MNH/compute_r00.f90 b/src/MNH/compute_r00.f90
index 5b7c68650..692fb3a1e 100644
--- a/src/MNH/compute_r00.f90
+++ b/src/MNH/compute_r00.f90
@@ -256,12 +256,12 @@ DO JFILECUR=1,NFILES
   IF (GSTART) THEN
     !
     CALL IO_Field_read(TZTRACFILE,'DTCUR',TDTCUR_START)
-    IHOUR   = INT(TDTCUR_START%TIME/3600.)
-    ZREMAIN = MOD(TDTCUR_START%TIME,3600.)
+    IHOUR   = INT(TDTCUR_START%xtime/3600.)
+    ZREMAIN = MOD(TDTCUR_START%xtime,3600.)
     IMINUTE = INT(ZREMAIN/60.)
     ZSECOND = MOD(ZREMAIN,60.)
     WRITE(YDATE,FMT='(1X,I4.4,I2.2,I2.2,2X,I2.2,"H",I2.2,"M", &
-         & F5.2,"S")') TDTCUR_START%TDATE, IHOUR,IMINUTE,ZSECOND  
+         & F5.2,"S")') TDTCUR_START%nyear, TDTCUR_START%nmonth, TDTCUR_START%nday, IHOUR,IMINUTE,ZSECOND
     !
     CALL IO_Field_read(TZTRACFILE,'THT',ZTH0(:,:,:))
     !
diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90
index af19ea567..b5b129240 100644
--- a/src/MNH/diag.f90
+++ b/src/MNH/diag.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1999-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1999-2020 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 for details. version 1.
@@ -537,10 +537,10 @@ IF ( LAIRCRAFT_BALLOON ) THEN
 !
   TPDTCUR_SAVE = TDTCUR
 !
-  TXDTBAL%TDATE%YEAR  = TDTCUR%TDATE%YEAR
-  TXDTBAL%TDATE%MONTH = TDTCUR%TDATE%MONTH
-  TXDTBAL%TDATE%DAY   = TDTCUR%TDATE%DAY
-  TXDTBAL%TIME        = TDTCUR%TIME - NTIME_AIRCRAFT_BALLOON/2.
+  TXDTBAL%nyear  = TDTCUR%nyear
+  TXDTBAL%nmonth = TDTCUR%nmonth
+  TXDTBAL%nday   = TDTCUR%nday
+  TXDTBAL%xtime  = TDTCUR%xtime - NTIME_AIRCRAFT_BALLOON/2.
   CALL DATETIME_CORRECTDATE(TXDTBAL)
   TDTCUR = TXDTBAL !TDTCUR is used in AIRCRAFT_BALLOON
 !
@@ -555,7 +555,7 @@ IF ( LAIRCRAFT_BALLOON ) THEN
                       XUT, XVT, XWT, XPABST, XTHT, XRT, XSVT,    &
                       XTKET, XTSRAD, XRHODREF,XCIT,ZSEA)
 
-    TXDTBAL%TIME=TXDTBAL%TIME + XSTEP_AIRCRAFT_BALLOON
+    TXDTBAL%xtime = TXDTBAL%xtime + XSTEP_AIRCRAFT_BALLOON
     CALL DATETIME_CORRECTDATE(TXDTBAL)
     TDTCUR = TXDTBAL !TDTCUR is used in AIRCRAFT_BALLOON
   ENDDO
diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90
index 3cd873895..8ae281d26 100644
--- a/src/MNH/flash_geom_elec.f90
+++ b/src/MNH/flash_geom_elec.f90
@@ -1525,7 +1525,7 @@ END IF   ! (inb_cell .ge. 1)
 !               --------------------------------------------------
 !
 IF (LLMA) THEN
-  IF( IPROC .EQ. 0 .AND. TDTCUR%TIME >= TDTLMA%TIME - PTSTEP ) THEN
+  IF( IPROC .EQ. 0 .AND. TDTCUR%xtime >= TDTLMA%xtime - PTSTEP ) THEN
     CALL WRITE_OUT_ASCII
     CALL WRITE_OUT_LMA
     ISFLASH_NUMBER(0) = ISFLASH_NUMBER(NNBLIGHT)
diff --git a/src/MNH/forcing.f90 b/src/MNH/forcing.f90
index ef75e5383..062cd4afa 100644
--- a/src/MNH/forcing.f90
+++ b/src/MNH/forcing.f90
@@ -286,10 +286,10 @@ IF (GSFIRSTCALL) THEN
   WRITE(UNIT=ILUOUT0,FMT='(" THERE ARE ",I2," FORCING SOUNDINGS AT:")') NFRC
   DO JSX = 1 , NFRC
     WRITE(UNIT=ILUOUT0,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') &
-      TDTFRC(JSX)%TIME,        &
-      TDTFRC(JSX)%TDATE%DAY,   &
-      TDTFRC(JSX)%TDATE%MONTH, &
-      TDTFRC(JSX)%TDATE%YEAR
+      TDTFRC(JSX)%xtime,  &
+      TDTFRC(JSX)%nday,   &
+      TDTFRC(JSX)%nmonth, &
+      TDTFRC(JSX)%nyear
   END DO
 !
 !*        1.2  find first sounding to be used 
diff --git a/src/MNH/ground_paramn.f90 b/src/MNH/ground_paramn.f90
index 5f8214224..b504d4b1b 100644
--- a/src/MNH/ground_paramn.f90
+++ b/src/MNH/ground_paramn.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 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.
 !-----------------------------------------------------------------
 !     ##########
@@ -503,9 +503,9 @@ IF( NRR    >= 7    .AND. SIZE(XINPRH)>0 ) ZSNOW = ZSNOW + XINPRH * XRHOLW
 !               ----------
 !
 IF (.NOT. LCARTESIAN) THEN
-  ZTSUN(:,:) = MOD(TDTCUR%TIME -XTSIDER*3600. +XLON(:,:)*240., XDAY)
+  ZTSUN(:,:) = MOD(TDTCUR%xtime -XTSIDER*3600. +XLON(:,:)*240., XDAY)
 ELSE
-  ZTSUN(:,:) = MOD(TDTCUR%TIME -XTSIDER*3600. +XLON0    *240., XDAY)
+  ZTSUN(:,:) = MOD(TDTCUR%xtime -XTSIDER*3600. +XLON0    *240., XDAY)
 END IF
 !
 !        1.12   Forcing level
@@ -588,17 +588,17 @@ END IF
 !
 ! Call to surface schemes
 !                       
-CALL COUPLING_SURF_ATM_n(YSURF_CUR,'MESONH', 'E',ZTIMEC,                                                   &
-               XTSTEP, TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, TDTCUR%TDATE%DAY, TDTCUR%TIME,  &
-               IDIM1D,KSV_SURF,SIZE(XSW_BANDS),                                                    &
-               ZP_TSUN, ZP_ZENITH,ZP_ZENITH, ZP_AZIM,                                                   &
-               ZP_ZREF, ZP_ZREF, ZP_ZS, ZP_U, ZP_V, ZP_QA, ZP_TA, ZP_RHOA, ZP_SV, ZP_CO2, YSV_SURF,&
-               ZP_RAIN, ZP_SNOW, ZP_LW, ZP_DIR_SW, ZP_SCA_SW, XSW_BANDS, ZP_PS, ZP_PA,        &
-               ZP_SFTQ, ZP_SFTH, ZP_SFTS, ZP_SFCO2, ZP_SFU, ZP_SFV,                           &
-               ZP_TSRAD, ZP_DIR_ALB, ZP_SCA_ALB, ZP_EMIS, ZP_TSURF, ZP_Z0, ZP_Z0H, ZP_QSURF,  &
-               ZP_PEW_A_COEF, ZP_PEW_B_COEF,                                                  &
-               ZP_PET_A_COEF, ZP_PEQ_A_COEF, ZP_PET_B_COEF, ZP_PEQ_B_COEF,ZP_ZWS,             &
-               'OK'                                                                           )
+CALL COUPLING_SURF_ATM_n(YSURF_CUR,'MESONH', 'E',ZTIMEC,                                            &
+               XTSTEP, TDTCUR%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime,                      &
+               IDIM1D,KSV_SURF,SIZE(XSW_BANDS),                                                     &
+               ZP_TSUN, ZP_ZENITH,ZP_ZENITH, ZP_AZIM,                                               &
+               ZP_ZREF, ZP_ZREF, ZP_ZS, ZP_U, ZP_V, ZP_QA, ZP_TA, ZP_RHOA, ZP_SV, ZP_CO2, YSV_SURF, &
+               ZP_RAIN, ZP_SNOW, ZP_LW, ZP_DIR_SW, ZP_SCA_SW, XSW_BANDS, ZP_PS, ZP_PA,              &
+               ZP_SFTQ, ZP_SFTH, ZP_SFTS, ZP_SFCO2, ZP_SFU, ZP_SFV,                                 &
+               ZP_TSRAD, ZP_DIR_ALB, ZP_SCA_ALB, ZP_EMIS, ZP_TSURF, ZP_Z0, ZP_Z0H, ZP_QSURF,        &
+               ZP_PEW_A_COEF, ZP_PEW_B_COEF,                                                        &
+               ZP_PET_A_COEF, ZP_PEQ_A_COEF, ZP_PET_B_COEF, ZP_PEQ_B_COEF,ZP_ZWS,                   &
+               'OK'                                                                                 )
 !
 #ifdef CPLOASIS
 IF (LOASIS) THEN
diff --git a/src/MNH/ini_aircraft.f90 b/src/MNH/ini_aircraft.f90
index afd5a75e1..2df936301 100644
--- a/src/MNH/ini_aircraft.f90
+++ b/src/MNH/ini_aircraft.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2000-2020 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$ $Date$
-!-----------------------------------------------------------------
 !     #######################
       SUBROUTINE INI_AIRCRAFT
 !     #######################
@@ -135,10 +131,10 @@ TAIRCRAFT1%STEP              = 60.
 !
 !* take-off date and time
 !
-TAIRCRAFT1%LAUNCH%TDATE%YEAR  =  2007
-TAIRCRAFT1%LAUNCH%TDATE%MONTH =    04
-TAIRCRAFT1%LAUNCH%TDATE%DAY   =    19
-TAIRCRAFT1%LAUNCH%TIME        = 32280.
+TAIRCRAFT1%LAUNCH%nyear  =  2007
+TAIRCRAFT1%LAUNCH%nmonth =    04
+TAIRCRAFT1%LAUNCH%nday   =    19
+TAIRCRAFT1%LAUNCH%xtime  = 32280.
 !
 !* number of flight segments
 !
@@ -365,10 +361,10 @@ TAIRCRAFT2%STEP             = 60.
 !
 !* take-off date and time
 !
-TAIRCRAFT2%LAUNCH%TDATE%YEAR  =  2007
-TAIRCRAFT2%LAUNCH%TDATE%MONTH =    04
-TAIRCRAFT2%LAUNCH%TDATE%DAY   =    19
-TAIRCRAFT2%LAUNCH%TIME        = 48060.
+TAIRCRAFT2%LAUNCH%nyear  =  2007
+TAIRCRAFT2%LAUNCH%nmonth =    04
+TAIRCRAFT2%LAUNCH%nday   =    19
+TAIRCRAFT2%LAUNCH%xtime  = 48060.
 !
 !* number of flight segments
 !
@@ -624,10 +620,10 @@ TAIRCRAFT3%STEP             = 30.
 !
 !* take-off date and time
 !
-TAIRCRAFT3%LAUNCH%TDATE%YEAR  =  2007
-TAIRCRAFT3%LAUNCH%TDATE%MONTH =    04
-TAIRCRAFT3%LAUNCH%TDATE%DAY   =    19
-TAIRCRAFT3%LAUNCH%TIME        = 45369
+TAIRCRAFT3%LAUNCH%nyear  =  2007
+TAIRCRAFT3%LAUNCH%nmonth =    04
+TAIRCRAFT3%LAUNCH%nday   =    19
+TAIRCRAFT3%LAUNCH%xtime  = 45369
 !
 !* number of flight segments
 !
@@ -731,10 +727,10 @@ TAIRCRAFT4%STEP             = 30.
 !
 !* take-off date and time
 !
-TAIRCRAFT4%LAUNCH%TDATE%YEAR  =  2007
-TAIRCRAFT4%LAUNCH%TDATE%MONTH =    04
-TAIRCRAFT4%LAUNCH%TDATE%DAY   =    19
-TAIRCRAFT4%LAUNCH%TIME        = 60392.
+TAIRCRAFT4%LAUNCH%nyear  =  2007
+TAIRCRAFT4%LAUNCH%nmonth =    04
+TAIRCRAFT4%LAUNCH%nday   =    19
+TAIRCRAFT4%LAUNCH%xtime  = 60392.
 !
 !* number of flight segments
 !
@@ -837,10 +833,10 @@ TAIRCRAFT5%STEP             = 30.
 !
 !* take-off date and time
 !
-TAIRCRAFT5%LAUNCH%TDATE%YEAR  =  2007
-TAIRCRAFT5%LAUNCH%TDATE%MONTH =    04
-TAIRCRAFT5%LAUNCH%TDATE%DAY   =    19
-TAIRCRAFT5%LAUNCH%TIME        = 43380.
+TAIRCRAFT5%LAUNCH%nyear  =  2007
+TAIRCRAFT5%LAUNCH%nmonth =    04
+TAIRCRAFT5%LAUNCH%nday   =    19
+TAIRCRAFT5%LAUNCH%xtime  = 43380.
 !
 !* number of flight segments
 !
@@ -1081,10 +1077,10 @@ TAIRCRAFT6%STEP             = 30.
 !
 !* take-off date and time
 !
-TAIRCRAFT6%LAUNCH%TDATE%YEAR  =  2007
-TAIRCRAFT6%LAUNCH%TDATE%MONTH =    04
-TAIRCRAFT6%LAUNCH%TDATE%DAY   =    19
-TAIRCRAFT6%LAUNCH%TIME        = 55992.
+TAIRCRAFT6%LAUNCH%nyear  =  2007
+TAIRCRAFT6%LAUNCH%nmonth =    04
+TAIRCRAFT6%LAUNCH%nday   =    19
+TAIRCRAFT6%LAUNCH%xtime  = 55992.
 !
 !* number of flight segments
 !
@@ -1322,10 +1318,10 @@ TAIRCRAFT7%STEP             = 60.
 !
 !* take-off date and time
 !
-TAIRCRAFT7%LAUNCH%TDATE%YEAR  =  2007
-TAIRCRAFT7%LAUNCH%TDATE%MONTH =    04
-TAIRCRAFT7%LAUNCH%TDATE%DAY   =    19
-TAIRCRAFT7%LAUNCH%TIME        = 43500.
+TAIRCRAFT7%LAUNCH%nyear  =  2007
+TAIRCRAFT7%LAUNCH%nmonth =    04
+TAIRCRAFT7%LAUNCH%nday   =    19
+TAIRCRAFT7%LAUNCH%xtime  = 43500.
 !
 !* number of flight segments
 !
@@ -1593,10 +1589,10 @@ TAIRCRAFT8%STEP             = 60.
 !
 !* take-off date and time
 !
-TAIRCRAFT8%LAUNCH%TDATE%YEAR  =  2007
-TAIRCRAFT8%LAUNCH%TDATE%MONTH =    04
-TAIRCRAFT8%LAUNCH%TDATE%DAY   =    22
-TAIRCRAFT8%LAUNCH%TIME        = 45720.
+TAIRCRAFT8%LAUNCH%nyear  =  2007
+TAIRCRAFT8%LAUNCH%nmonth =    04
+TAIRCRAFT8%LAUNCH%nday   =    22
+TAIRCRAFT8%LAUNCH%xtime  = 45720.
 !
 !* number of flight segments
 !
@@ -1867,10 +1863,10 @@ TAIRCRAFT9%STEP             = 60.
 !
 !* take-off date and time
 !
-TAIRCRAFT9%LAUNCH%TDATE%YEAR  =  2007
-TAIRCRAFT9%LAUNCH%TDATE%MONTH =    04
-TAIRCRAFT9%LAUNCH%TDATE%DAY   =    23
-TAIRCRAFT9%LAUNCH%TIME        = 28080.
+TAIRCRAFT9%LAUNCH%nyear  =  2007
+TAIRCRAFT9%LAUNCH%nmonth =    04
+TAIRCRAFT9%LAUNCH%nday   =    23
+TAIRCRAFT9%LAUNCH%xtime  = 28080.
 !
 !* number of flight segments
 !
diff --git a/src/MNH/ini_balloon.f90 b/src/MNH/ini_balloon.f90
index 47a98ccc5..71e935021 100644
--- a/src/MNH/ini_balloon.f90
+++ b/src/MNH/ini_balloon.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2000-2020 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 balloon 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     ######################
       SUBROUTINE INI_BALLOON
 !     ######################
@@ -139,10 +134,10 @@ TBALLOON1%TITLE              = 'CVB1MOBI'
 !
 !* launching date and time
 !
-TBALLOON1%LAUNCH%TDATE%YEAR  =  1999
-TBALLOON1%LAUNCH%TDATE%MONTH =    09
-TBALLOON1%LAUNCH%TDATE%DAY   =    19
-TBALLOON1%LAUNCH%TIME        = 32460.
+TBALLOON1%LAUNCH%nyear  =  1999
+TBALLOON1%LAUNCH%nmonth =    09
+TBALLOON1%LAUNCH%nday   =    19
+TBALLOON1%LAUNCH%xtime  = 32460.
 !
 !* latitude and longitude of launching site (decimal degree)
 !
@@ -194,10 +189,10 @@ TBALLOON2%TITLE              = 'CVB2MOBI'
 !
 !* launching date and time
 !
-TBALLOON2%LAUNCH%TDATE%YEAR  =  1999
-TBALLOON2%LAUNCH%TDATE%MONTH =    09
-TBALLOON2%LAUNCH%TDATE%DAY   =    19
-TBALLOON2%LAUNCH%TIME        = 39660.
+TBALLOON2%LAUNCH%nyear  =  1999
+TBALLOON2%LAUNCH%nmonth =    09
+TBALLOON2%LAUNCH%nday   =    19
+TBALLOON2%LAUNCH%xtime  = 39660.
 !
 !* latitude and longitude of launching site (decimal degree)
 !
@@ -250,10 +245,10 @@ TBALLOON3%TITLE              = 'RSMASE19'
 !
 !* launching date and time
 !
-TBALLOON3%LAUNCH%TDATE%YEAR  =  1999
-TBALLOON3%LAUNCH%TDATE%MONTH =    09
-TBALLOON3%LAUNCH%TDATE%DAY   =    19
-TBALLOON3%LAUNCH%TIME        = 68400.
+TBALLOON3%LAUNCH%nyear  =  1999
+TBALLOON3%LAUNCH%nmonth =    09
+TBALLOON3%LAUNCH%nday   =    19
+TBALLOON3%LAUNCH%xtime  = 68400.
 !
 !* latitude and longitude of launching site (decimal degree)
 !
@@ -306,10 +301,10 @@ TBALLOON4%TITLE              = 'CVB1ACVB'
 !
 !* launching date and time
 !
-TBALLOON4%LAUNCH%TDATE%YEAR  =  1999
-TBALLOON4%LAUNCH%TDATE%MONTH =    09
-TBALLOON4%LAUNCH%TDATE%DAY   =    19
-TBALLOON4%LAUNCH%TIME        = 32460.
+TBALLOON4%LAUNCH%nyear  =  1999
+TBALLOON4%LAUNCH%nmonth =    09
+TBALLOON4%LAUNCH%nday   =    19
+TBALLOON4%LAUNCH%xtime  = 32460.
 !
 !* latitude and longitude of launching site (decimal degree)
 !
@@ -361,10 +356,10 @@ TBALLOON5%TITLE              = 'CVB1DEPA'
 !
 !* launching date and time
 !
-TBALLOON5%LAUNCH%TDATE%YEAR  =  1999
-TBALLOON5%LAUNCH%TDATE%MONTH =    09
-TBALLOON5%LAUNCH%TDATE%DAY   =    19
-TBALLOON5%LAUNCH%TIME        = 32435.
+TBALLOON5%LAUNCH%nyear  =  1999
+TBALLOON5%LAUNCH%nmonth =    09
+TBALLOON5%LAUNCH%nday   =    19
+TBALLOON5%LAUNCH%xtime  = 32435.
 !
 !* latitude and longitude of launching site (decimal degree)
 !
@@ -416,10 +411,10 @@ TBALLOON6%TITLE              = 'CVB1RCVB'
 !
 !* launching date and time
 !
-TBALLOON6%LAUNCH%TDATE%YEAR  =  1999
-TBALLOON6%LAUNCH%TDATE%MONTH =    09
-TBALLOON6%LAUNCH%TDATE%DAY   =    19
-TBALLOON6%LAUNCH%TIME        = 32460.
+TBALLOON6%LAUNCH%nyear  =  1999
+TBALLOON6%LAUNCH%nmonth =    09
+TBALLOON6%LAUNCH%nday   =    19
+TBALLOON6%LAUNCH%xtime  = 32460.
 !
 !* latitude and longitude of launching site (decimal degree)
 !
@@ -471,10 +466,10 @@ TBALLOON7%TITLE              = 'CVB1PISO'
 !
 !* launching date and time
 !
-TBALLOON7%LAUNCH%TDATE%YEAR  =  1999
-TBALLOON7%LAUNCH%TDATE%MONTH =    09
-TBALLOON7%LAUNCH%TDATE%DAY   =    19
-TBALLOON7%LAUNCH%TIME        = 32460.
+TBALLOON7%LAUNCH%nyear  =  1999
+TBALLOON7%LAUNCH%nmonth =    09
+TBALLOON7%LAUNCH%nday   =    19
+TBALLOON7%LAUNCH%xtime  = 32460.
 !
 !* latitude and longitude of launching site (decimal degree)
 !
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index 74971c319..1e59f88b7 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -1748,8 +1748,8 @@ NDT_2_WAY(KMI)=4
 !
 IF ( LUSECHEM .OR. LCHEMDIAG ) THEN
   IF ((KMI==1).AND.(CPROGRAM == "MESONH".OR.CPROGRAM == "DIAG  "))  &
-    CALL CH_INIT_JVALUES(TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH,      &
-                         TDTCUR%TDATE%YEAR, ILUOUT, XCH_TUV_DOBNEW)
+    CALL CH_INIT_JVALUES(TDTCUR%nday, TDTCUR%nmonth,      &
+                         TDTCUR%nyear, ILUOUT, XCH_TUV_DOBNEW)
 !
   IF (LORILAM) THEN
     CALL CH_AER_MOD_INIT
@@ -2460,7 +2460,7 @@ ENDIF
 !------------------------------------
 IF ( LFOREFIRE ) THEN
   CALL INIT_FOREFIRE_n(KMI, ILUOUT, IP &
-        , TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, TDTCUR%TDATE%DAY, TDTCUR%TIME, XTSTEP)
+        , TDTCUR%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime, XTSTEP)
 END IF
 #endif
 
diff --git a/src/MNH/ini_radiations.f90 b/src/MNH/ini_radiations.f90
index d05fc31f5..883179c8b 100644
--- a/src/MNH/ini_radiations.f90
+++ b/src/MNH/ini_radiations.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2003-2020 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 for details. version 1.
@@ -206,19 +206,19 @@ DO JI=1,11
   IBIS(JI) = INOBIS(JI)+1
 END DO
 IF ( LFIX_DAT ) THEN   ! Ajout PP 
-   IF( MOD(TPDTEXP%TDATE%YEAR,4).EQ.0 ) THEN
-    ZDATE = REAL(TPDTEXP%TDATE%DAY +   IBIS(TPDTEXP%TDATE%MONTH-1)) - 1
+   IF( MOD(TPDTEXP%nyear,4).EQ.0 ) THEN
+    ZDATE = REAL(TPDTEXP%nday +   IBIS(TPDTEXP%nmonth-1)) - 1
      ZAD = 2.0*XPI*ZDATE/366.0
    ELSE
-     ZDATE = REAL(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1
+     ZDATE = REAL(TPDTEXP%nday + INOBIS(TPDTEXP%nmonth-1)) - 1
      ZAD = 2.0*XPI*ZDATE/365.0
    END IF
 ELSE
-   IF( MOD(TPDTCUR%TDATE%YEAR,4).EQ.0 ) THEN
-     ZDATE = REAL(TPDTCUR%TDATE%DAY +   IBIS(TPDTCUR%TDATE%MONTH-1)) - 1
+   IF( MOD(TPDTCUR%nyear,4).EQ.0 ) THEN
+     ZDATE = REAL(TPDTCUR%nday +   IBIS(TPDTCUR%nmonth-1)) - 1
      ZAD = 2.0*XPI*ZDATE/366.0
    ELSE
-     ZDATE = REAL(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1
+     ZDATE = REAL(TPDTCUR%nday + INOBIS(TPDTCUR%nmonth-1)) - 1
      ZAD = 2.0*XPI*ZDATE/365.0
    END IF
 END IF
diff --git a/src/MNH/ini_radiations_ecmwf.f90 b/src/MNH/ini_radiations_ecmwf.f90
index b71883584..e8f11de28 100644
--- a/src/MNH/ini_radiations_ecmwf.f90
+++ b/src/MNH/ini_radiations_ecmwf.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2020 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 for details. version 1.
@@ -337,7 +337,7 @@ ENDIF
 !  summer/winter dependency
 !
 IF (LFIX_DAT ) THEN           ! Ajout PP 
-   IF( (TPDTEXP%TDATE%MONTH.GE.4).AND.(TPDTEXP%TDATE%MONTH.LE.9) ) THEN
+   IF( (TPDTEXP%nmonth.GE.4).AND.(TPDTEXP%nmonth.LE.9) ) THEN
      GSUMMER = .TRUE.
      GWINTER = .FALSE.
    ELSE
@@ -345,7 +345,7 @@ IF (LFIX_DAT ) THEN           ! Ajout PP
      GWINTER = .TRUE.
    END IF
 ELSE
-   IF( (TPDTCUR%TDATE%MONTH.GE.4).AND.(TPDTCUR%TDATE%MONTH.LE.9) ) THEN
+   IF( (TPDTCUR%nmonth.GE.4).AND.(TPDTCUR%nmonth.LE.9) ) THEN
      GSUMMER = .TRUE.
      GWINTER = .FALSE.
    ELSE
@@ -518,11 +518,11 @@ END IF
 ALLOCATE (ZOZON(KDLON,KFLEV))
 !
 IF (LFIX_DAT ) THEN     ! Ajout PP 
- ZYMD = TPDTEXP%TDATE%YEAR * 1E4 + TPDTEXP%TDATE%MONTH * 1E2 + TPDTEXP%TDATE%DAY
- ZHOURS = INT(TPDTEXP%TIME / 60.)
+ ZYMD = TPDTEXP%nyear * 1E4 + TPDTEXP%nmonth * 1E2 + TPDTEXP%nday
+ ZHOURS = INT(TPDTEXP%xtime / 60.)
 ELSE
- ZYMD = TPDTCUR%TDATE%YEAR * 1E4 + TPDTCUR%TDATE%MONTH * 1E2 + TPDTCUR%TDATE%DAY
- ZHOURS = INT(TPDTCUR%TIME / 60.)
+ ZYMD = TPDTCUR%nyear * 1E4 + TPDTCUR%nmonth * 1E2 + TPDTCUR%nday
+ ZHOURS = INT(TPDTCUR%xtime / 60.)
 END IF
 !
 ! Fortuin langematz climatology loading
diff --git a/src/MNH/init_ground_paramn.f90 b/src/MNH/init_ground_paramn.f90
index ab38093a9..95b13ded3 100644
--- a/src/MNH/init_ground_paramn.f90
+++ b/src/MNH/init_ground_paramn.f90
@@ -191,12 +191,12 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('DTCUR',IID,IRESP)
 TZTCUR=>TFIELDLIST(IID)%TFIELD_T0D(1)%DATA
 !
 TZDATE = TZTCUR
-TZDATE%TIME = TZDATE%TIME + NSTOP * XTSTEP
+TZDATE%xtime = TZDATE%xtime + NSTOP * XTSTEP
 CALL DATETIME_CORRECTDATE(TZDATE)
 !Done field by field because TYPE(DATE) different in MesoNH and SURFEX
-TDATE_END%YEAR  = TZDATE%TDATE%YEAR
-TDATE_END%MONTH = TZDATE%TDATE%MONTH
-TDATE_END%DAY   = TZDATE%TDATE%DAY
+TDATE_END%YEAR  = TZDATE%nyear
+TDATE_END%MONTH = TZDATE%nmonth
+TDATE_END%DAY   = TZDATE%nday
 !
 DO JLAYER=NSV_SNWBEG,NSV_SNWEND
   HSV(JLAYER) = TRIM(CSNOWNAMES(JLAYER-NSV_SNWBEG+1))
@@ -220,13 +220,13 @@ ELSE
 ENDIF
 CALL INIT_SURF_ATM_n(YSURF_CUR,'MESONH',HINIT,.FALSE.,                  &
                      ILU,ISV,SIZE(PSW_BANDS),                           &
-                     YSV_SURF,ZCO2,ZRHODREF,                                 &
+                     YSV_SURF,ZCO2,ZRHODREF,                            &
                      ZZENITH,ZAZIM,PSW_BANDS,ZDIR_ALB,ZSCA_ALB,         &
                      ZEMIS,ZTSRAD,ZTSURF,                               &
-                     TZTCUR%TDATE%YEAR, TZTCUR%TDATE%MONTH,             &
-                     TZTCUR%TDATE%DAY, TZTCUR%TIME,                     &
+                     TZTCUR%nyear, TZTCUR%nmonth,                       &
+                     TZTCUR%nday, TZTCUR%xtime,                         &
                      TDATE_END,'                            ','      ', &
-                     'OK'                                       )
+                     'OK'                                               )
 !
 PDIR_ALB = XUNDEF
 PSCA_ALB = XUNDEF
diff --git a/src/MNH/mnh2lpdm_ech.f90 b/src/MNH/mnh2lpdm_ech.f90
index 7602cbaed..f116da388 100644
--- a/src/MNH/mnh2lpdm_ech.f90
+++ b/src/MNH/mnh2lpdm_ech.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2009-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2009-2020 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 for details. version 1.
@@ -83,10 +83,10 @@ CALL IO_File_open(TPFILE)
 !
 CALL IO_Field_read(TPFILE,'DTCUR',TZDTCUR)
 ! 
-ICURAA=MOD(TZDTCUR%TDATE%YEAR,100)  ! Annee sur 2 caracteres.
-ICURMM=TZDTCUR%TDATE%MONTH
-ICURJJ=TZDTCUR%TDATE%DAY
-ICURSS=NINT(TZDTCUR%TIME)
+ICURAA=MOD(TZDTCUR%nyear,100)  ! Annee sur 2 caracteres.
+ICURMM=TZDTCUR%nmonth
+ICURJJ=TZDTCUR%nday
+ICURSS=NINT(TZDTCUR%xtime)
 !
 ICURMN = NINT( (REAL(ICURSS)/60.0)/5.0 )*5   ! Heure arrondie a 5 minutes pres.
 ICURSS = 0
diff --git a/src/MNH/mnh2lpdm_ini.f90 b/src/MNH/mnh2lpdm_ini.f90
index 0d317661d..6cf4bfab0 100644
--- a/src/MNH/mnh2lpdm_ini.f90
+++ b/src/MNH/mnh2lpdm_ini.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2009-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2009-2020 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 for details. version 1.
@@ -114,27 +114,27 @@ CALL IO_Field_read(TPFILE2,'DTCUR',TZDTCUR2)
 CALL DATETIME_DISTANCE(TZDTEXP1,TZDTCUR1,ZECHEANCE1)
 CALL DATETIME_DISTANCE(TZDTEXP1,TZDTCUR2,ZECHEANCE2)
 !
-IHHMDL=INT(TZDTEXP1%TIME/3600)
-IMNMDL=INT((TZDTEXP1%TIME-IHHMDL*3600)/60)
-ISSMDL=INT(TZDTEXP1%TIME-IHHMDL*3600-IMNMDL*60)
-IHHCUR1=INT(TZDTCUR1%TIME/3600)
-IMNCUR1=INT((TZDTCUR1%TIME-IHHCUR1*3600)/60)
-ISSCUR1=INT(TZDTCUR1%TIME-IHHCUR1*3600-IMNCUR1*60)
-IHHCUR2=INT(TZDTCUR2%TIME/3600)
-IMNCUR2=INT((TZDTCUR2%TIME-IHHCUR2*3600)/60)
-ISSCUR2=INT(TZDTCUR2%TIME-IHHCUR2*3600-IMNCUR2*60)
-!
-WRITE(YDATMDL, '(I4.4,5I2.2)') TZDTEXP1%TDATE%YEAR, TZDTEXP1%TDATE%MONTH, TZDTEXP1%TDATE%DAY, &
+IHHMDL=INT(TZDTEXP1%xtime/3600)
+IMNMDL=INT((TZDTEXP1%xtime-IHHMDL*3600)/60)
+ISSMDL=INT(TZDTEXP1%xtime-IHHMDL*3600-IMNMDL*60)
+IHHCUR1=INT(TZDTCUR1%xtime/3600)
+IMNCUR1=INT((TZDTCUR1%xtime-IHHCUR1*3600)/60)
+ISSCUR1=INT(TZDTCUR1%xtime-IHHCUR1*3600-IMNCUR1*60)
+IHHCUR2=INT(TZDTCUR2%xtime/3600)
+IMNCUR2=INT((TZDTCUR2%xtime-IHHCUR2*3600)/60)
+ISSCUR2=INT(TZDTCUR2%xtime-IHHCUR2*3600-IMNCUR2*60)
+!
+WRITE(YDATMDL, '(I4.4,5I2.2)') TZDTEXP1%nyear, TZDTEXP1%nmonth, TZDTEXP1%nday, &
                                IHHMDL, IMNMDL, ISSMDL
-WRITE(YDATCUR1,'(I4.4,5I2.2)') TZDTCUR1%TDATE%YEAR, TZDTCUR1%TDATE%MONTH, TZDTCUR1%TDATE%DAY, &
+WRITE(YDATCUR1,'(I4.4,5I2.2)') TZDTCUR1%nyear, TZDTCUR1%nmonth, TZDTCUR1%nday, &
                                IHHCUR1, IMNCUR1, ISSCUR1
-WRITE(YDATCUR2,'(I4.4,5I2.2)') TZDTCUR2%TDATE%YEAR, TZDTCUR2%TDATE%MONTH, TZDTCUR2%TDATE%DAY, &
+WRITE(YDATCUR2,'(I4.4,5I2.2)') TZDTCUR2%nyear, TZDTCUR2%nmonth, TZDTCUR2%nday, &
                                IHHCUR2, IMNCUR2, ISSCUR2
 ! 
-NMDLAA=MOD( TZDTEXP1%TDATE%YEAR, 100 )  ! Annee arrondi a 2 chiffres.
-NMDLMM=TZDTEXP1%TDATE%MONTH
-NMDLJJ=TZDTEXP1%TDATE%DAY
-NMDLSS=NINT(TZDTEXP1%TIME)
+NMDLAA=MOD( TZDTEXP1%nyear, 100 )  ! Annee arrondi a 2 chiffres.
+NMDLMM=TZDTEXP1%nmonth
+NMDLJJ=TZDTEXP1%nday
+NMDLSS=NINT(TZDTEXP1%xtime)
 !
 !*	Heure du modele arrondie a 5 minutes pres.
 !
diff --git a/src/MNH/modd_type_date.f90 b/src/MNH/modd_type_date.f90
index 76fb6b097..e9717d321 100644
--- a/src/MNH/modd_type_date.f90
+++ b/src/MNH/modd_type_date.f90
@@ -1,11 +1,11 @@
-!MNH_LIC Copyright 1997-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1997-2020 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 for details. version 1.
 !-----------------------------------------------------------------
-!     #################
-      MODULE MODD_TYPE_DATE
-!     #################
+!####################
+module modd_type_date
+!####################
 !
 !!****  *MODD_TYPE_DATE* - declaration of temporal types
 !!
@@ -31,24 +31,24 @@
 !!    -------------
 !!      Original    11/08/97
 !  P. Wautelet 24/07/2019: set default values
+!  P. Wautelet 17/12/2020: restructure type date_time
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
 !             ------------
-!
+
 use modd_parameters, only: NNEGUNDEF, XNEGUNDEF
 
-IMPLICIT NONE
-!
-TYPE DATE
-  INTEGER :: YEAR  = NNEGUNDEF
-  INTEGER :: MONTH = 0
-  INTEGER :: DAY   = 0
-END TYPE DATE
+implicit none
+
+type date
+  integer :: nyear  = NNEGUNDEF
+  integer :: nmonth = 0
+  integer :: nday   = 0
+end type date
 !
-TYPE DATE_TIME
-  TYPE (DATE) :: TDATE
-  REAL        :: TIME = XNEGUNDEF
-END TYPE DATE_TIME
+type, extends( date ) :: date_time
+  real :: xtime = XNEGUNDEF
+end type date_time
 !
-END MODULE MODD_TYPE_DATE
+end module modd_type_date
diff --git a/src/MNH/mode_datetime.f90 b/src/MNH/mode_datetime.f90
index b6547cfa9..a1911cc21 100644
--- a/src/MNH/mode_datetime.f90
+++ b/src/MNH/mode_datetime.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2018-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2018-2020 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 for details. version 1.
@@ -23,7 +23,7 @@ PUBLIC :: OPERATOR(>=)
 !
 !Reference date (do not change it)
 !To work with DATETIME_TIME2REFERENCE, we assume the year is a multiple of 400 + 1 and the date is January 1st (and time=0.)
-TYPE(DATE_TIME),PARAMETER :: TPREFERENCE_DATE = DATE_TIME( TDATE=DATE(1601,1,1), TIME=0. )
+TYPE(DATE_TIME),PARAMETER :: TPREFERENCE_DATE = DATE_TIME( nyear = 1601, nmonth = 1, nday =1 , xtime = 0. )
 !
 INTERFACE OPERATOR(<)
   MODULE PROCEDURE DATETIME_LT
@@ -57,10 +57,10 @@ IDAYS  = 0_MNHINT64
 TZDATE = TPDATE
 CALL DATETIME_CORRECTDATE(TZDATE)
 !
-IYEAR_CUR  = int( TZDATE%TDATE%YEAR,  kind=MNHINT64 )
-IMONTH_CUR = int( TZDATE%TDATE%MONTH, kind=MNHINT64 )
-IDAY_CUR   = int( TZDATE%TDATE%DAY,   kind=MNHINT64 )
-ZSEC = TZDATE%TIME
+IYEAR_CUR  = int( TZDATE%nyear,  kind=MNHINT64 )
+IMONTH_CUR = int( TZDATE%nmonth, kind=MNHINT64 )
+IDAY_CUR   = int( TZDATE%nday,   kind=MNHINT64 )
+ZSEC       = TZDATE%xtime
 !
 !Compute number of days since beginning of the year
 IF ( ((MOD(IYEAR_CUR,4_MNHINT64)==0).AND.(MOD(IYEAR_CUR,100_MNHINT64)/=0)) .OR. (MOD(IYEAR_CUR,400_MNHINT64)==0)) ILEAPS=1
@@ -91,7 +91,7 @@ SELECT CASE(IMONTH_CUR)
     IDAYS = IDAY_CUR-1+31+28+ILEAPS+31+30+31+30+31+31+30+31+30
 END SELECT
 !
-IYEARS = IYEAR_CUR - int( TPREFERENCE_DATE%TDATE%YEAR, kind=MNHINT64 )
+IYEARS = IYEAR_CUR - int( TPREFERENCE_DATE%nyear, kind=MNHINT64 )
 IF ( IYEARS < 0_MNHINT64 ) THEN
   CALL PRINT_MSG(NVERB_WARNING,'GEN','DATETIME_TIME2REFERENCE', &
                  'input year is smaller than reference year => result could be invalid')
@@ -142,14 +142,14 @@ INTEGER :: IMONTH_LGT                      !Number of days in a month
 LOGICAL :: GKO
 REAL    :: ZSEC                            !Current time of the day (in seconds)
 !
-IYEAR_CUR  = TPDATE%TDATE%YEAR
-IMONTH_CUR = TPDATE%TDATE%MONTH
-IDAY_CUR   = TPDATE%TDATE%DAY
-ZSEC = TPDATE%TIME
+IYEAR_CUR  = TPDATE%nyear
+IMONTH_CUR = TPDATE%nmonth
+IDAY_CUR   = TPDATE%nday
+ZSEC       = TPDATE%xtime
 ! print *,'DATETIME_CORRECTDATE in: ',IYEAR_CUR,IMONTH_CUR,IDAY_CUR,ZSEC
 !
 CALL DATETIME_GETMONTHLGT(IYEAR_CUR,IMONTH_CUR,IMONTH_LGT)
-IF (TPDATE%TIME<0. .OR. TPDATE%TIME>=86400. .OR. &
+IF (TPDATE%xtime<0. .OR. TPDATE%xtime>=86400. .OR. &
     IDAY_CUR<1     .OR. IDAY_CUR>IMONTH_LGT .OR. &
     IMONTH_CUR<1   .OR. IMONTH_CUR>12            ) THEN
   GKO = .TRUE.
@@ -157,12 +157,12 @@ ELSE
   GKO = .FALSE.
 END IF
 !
-IF (TPDATE%TIME<0.) THEN
+IF (TPDATE%xtime<0.) THEN
   !Number of days to remove
-  IDAYS = INT(TPDATE%TIME/86400.)-1
-ELSE IF (TPDATE%TIME>=86400.) THEN
+  IDAYS = INT(TPDATE%xtime/86400.)-1
+ELSE IF (TPDATE%xtime>=86400.) THEN
   !Number of days to add
-  IDAYS = INT(TPDATE%TIME/86400.)
+  IDAYS = INT(TPDATE%xtime/86400.)
 ELSE
   IDAYS = 0
 END IF
@@ -211,10 +211,10 @@ DO WHILE (GKO)
 END DO
 ! print *,'DATETIME_CORRECTDATE out:',IYEAR_CUR,IMONTH_CUR,IDAY_CUR,ZSEC
 !
-TPDATE%TDATE%YEAR  = IYEAR_CUR
-TPDATE%TDATE%MONTH = IMONTH_CUR
-TPDATE%TDATE%DAY   = IDAY_CUR
-TPDATE%TIME        = ZSEC
+TPDATE%nyear  = IYEAR_CUR
+TPDATE%nmonth = IMONTH_CUR
+TPDATE%nday   = IDAY_CUR
+TPDATE%xtime  = ZSEC
 !
 END SUBROUTINE DATETIME_CORRECTDATE
 !
@@ -251,18 +251,18 @@ TYPE(DATE_TIME), INTENT(IN) :: TPT1, TPT2
 ! TRUE if TPT1 .LT. TPT2
 !
 !
-IF ( TPT1%TDATE%YEAR .EQ. TPT2%TDATE%YEAR ) THEN
-  IF ( TPT1%TDATE%MONTH .EQ. TPT2%TDATE%MONTH ) THEN
-    IF ( TPT1%TDATE%DAY .EQ. TPT2%TDATE%DAY ) THEN
-      OLT = TPT1%TIME .LT. TPT2%TIME
+IF ( TPT1%nyear .EQ. TPT2%nyear ) THEN
+  IF ( TPT1%nmonth .EQ. TPT2%nmonth ) THEN
+    IF ( TPT1%nday .EQ. TPT2%nday ) THEN
+      OLT = TPT1%xtime .LT. TPT2%xtime
     ELSE
-      OLT = TPT1%TDATE%DAY .LT. TPT2%TDATE%DAY
+      OLT = TPT1%nday .LT. TPT2%nday
     END IF
   ELSE
-   OLT = TPT1%TDATE%MONTH .LT. TPT2%TDATE%MONTH
+   OLT = TPT1%nmonth .LT. TPT2%nmonth
   END IF
 ELSE
-  OLT = TPT1%TDATE%YEAR .LT. TPT2%TDATE%YEAR
+  OLT = TPT1%nyear .LT. TPT2%nyear
 ENDIF
 !
 END FUNCTION DATETIME_LT
diff --git a/src/MNH/mode_les_diachro.f90 b/src/MNH/mode_les_diachro.f90
index 87405ef83..9031c723c 100644
--- a/src/MNH/mode_les_diachro.f90
+++ b/src/MNH/mode_les_diachro.f90
@@ -500,10 +500,10 @@ DO JAVG=1,IAVG
     END DO
   END DO
 
-  tpdates(javg )%tdate%year  = tdtseg%tdate%year
-  tpdates(javg )%tdate%month = tdtseg%tdate%month
-  tpdates(javg )%tdate%day   = tdtseg%tdate%day
-  tpdates(javg )%time        = tdtseg%time + ( zles_temp_mean_start + zles_temp_mean_end ) / 2.
+  tpdates(javg)%nyear  = tdtseg%nyear
+  tpdates(javg)%nmonth = tdtseg%nmonth
+  tpdates(javg)%nday   = tdtseg%nday
+  tpdates(javg)%xtime  = tdtseg%xtime + ( zles_temp_mean_start + zles_temp_mean_end ) / 2.
   call Datetime_correctdate( tpdates(javg ) )
 END DO
 !
@@ -597,10 +597,10 @@ do javg = 1, iavg
     end do
   end do
 
-  tpdates(javg)%tdate%year  = tdtseg%tdate%year
-  tpdates(javg)%tdate%month = tdtseg%tdate%month
-  tpdates(javg)%tdate%day   = tdtseg%tdate%day
-  tpdates(javg)%time        = tdtseg%time + ( zles_temp_mean_start + zles_temp_mean_end ) / 2.
+  tpdates(javg)%nyear  = tdtseg%nyear
+  tpdates(javg)%nmonth = tdtseg%nmonth
+  tpdates(javg)%nday   = tdtseg%nday
+  tpdates(javg)%xtime  = tdtseg%xtime + ( zles_temp_mean_start + zles_temp_mean_end ) / 2.
   call Datetime_correctdate( tpdates(javg) )
 end do
 
diff --git a/src/MNH/mode_time.f90 b/src/MNH/mode_time.f90
index 0f71113f9..86b9dbadb 100644
--- a/src/MNH/mode_time.f90
+++ b/src/MNH/mode_time.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 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 for details. version 1.
@@ -113,8 +113,8 @@ INTEGER :: ILUOUT
 !*       1.    CONVERT TIME IN HOURS,MINUTES AND SECONDS :
 !              ------------------------------------------
 !
-IHOUR   = INT(TPDATETIME%TIME/3600.)
-ZREMAIN = MOD(TPDATETIME%TIME,3600.)
+IHOUR   = INT(TPDATETIME%xtime/3600.)
+ZREMAIN = MOD(TPDATETIME%xtime,3600.)
 IMINUTE = INT(ZREMAIN/60.)
 ZSECOND = MOD(ZREMAIN,60.)
 !
@@ -126,22 +126,22 @@ ZSECOND = MOD(ZREMAIN,60.)
 ILUOUT = TPOUTFILE%NLU
 !
 IF (PRESENT(HTITLE)) THEN
-  IF ((TPDATETIME%TDATE%YEAR < 0).OR.(TPDATETIME%TDATE%MONTH < 0).OR.    &
-     (TPDATETIME%TDATE%DAY < 0) ) THEN 
+  IF ((TPDATETIME%nyear < 0).OR.(TPDATETIME%nmonth < 0).OR.    &
+     (TPDATETIME%nday < 0) ) THEN 
     WRITE(UNIT=ILUOUT,FMT='(1X,A," :",2X,I2.2,"H",I2.2,"M", &
          & F5.2,"S")') HTITLE, IHOUR,IMINUTE,ZSECOND
   ELSE
     WRITE(UNIT=ILUOUT,FMT='(1X,A," :",I4.4,I2.2,I2.2,2X,I2.2,"H",I2.2,"M", &
-         & F5.2,"S")') HTITLE, TPDATETIME%TDATE, IHOUR,IMINUTE,ZSECOND
+         & F5.2,"S")') HTITLE, TPDATETIME%nyear, TPDATETIME%nmonth, TPDATETIME%nday, IHOUR,IMINUTE,ZSECOND
   END IF
 ELSE
-  IF ((TPDATETIME%TDATE%YEAR < 0).OR.(TPDATETIME%TDATE%MONTH < 0).OR.    &
-     (TPDATETIME%TDATE%DAY < 0) ) THEN 
+  IF ((TPDATETIME%nyear < 0).OR.(TPDATETIME%nmonth < 0).OR.    &
+     (TPDATETIME%nday < 0) ) THEN 
     WRITE(UNIT=ILUOUT,FMT='(1X,2X,I2.2,"H",I2.2,"M", &
          & F5.2,"S")') IHOUR,IMINUTE,ZSECOND  
   ELSE 
     WRITE(UNIT=ILUOUT,FMT='(1X,I4.4,I2.2,I2.2,2X,I2.2,"H",I2.2,"M", &
-         & F5.2,"S")') TPDATETIME%TDATE, IHOUR,IMINUTE,ZSECOND  
+         & F5.2,"S")') TPDATETIME%nyear, TPDATETIME%nmonth, TPDATETIME%nday, IHOUR,IMINUTE,ZSECOND
   END IF
 END IF
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 494ae993e..d50b8881a 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -2066,7 +2066,7 @@ END IF
 !*       27.    CURRENT TIME REFRESH
 !               --------------------
 !
-TDTCUR%TIME=TDTCUR%TIME + XTSTEP
+TDTCUR%xtime=TDTCUR%xtime + XTSTEP
 CALL DATETIME_CORRECTDATE(TDTCUR)
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/paspol.f90 b/src/MNH/paspol.f90
index 98c8c94d7..50988a348 100644
--- a/src/MNH/paspol.f90
+++ b/src/MNH/paspol.f90
@@ -316,7 +316,7 @@ IF (GPPFIRSTCALL) THEN
          !*	1.3 Chronologie du rejet.
          !
          ! Eclatement des dates caracteristiques et calcul du
-         ! nombre de secondes depuis 0UTC (equiv. TDTCUR%TIME).
+         ! nombre de secondes depuis 0UTC (equiv. TDTCUR%xtime).
          !
          READ(CPPT1(JSV),'(I4,5I2)') I1YY,I1MM,I1DD,I1HH,I1MN,I1SS
          READ(CPPT2(JSV),'(I4,5I2)') I2YY,I2MM,I2DD,I2HH,I2MN,I2SS
@@ -330,10 +330,10 @@ IF (GPPFIRSTCALL) THEN
          ! Chrono relative au debut du rejet en secondes.
          !
          ZT1=0.
-         TZDATE1%TDATE%YEAR=I1YY;TZDATE1%TDATE%MONTH=I1MM;TZDATE1%TDATE%DAY=I1DD;TZDATE1%TIME=Z1SEC
-         TZDATE2%TDATE%YEAR=I2YY;TZDATE2%TDATE%MONTH=I2MM;TZDATE2%TDATE%DAY=I2DD;TZDATE2%TIME=Z2SEC
-         TZDATE3%TDATE%YEAR=I3YY;TZDATE3%TDATE%MONTH=I3MM;TZDATE3%TDATE%DAY=I3DD;TZDATE3%TIME=Z3SEC
-         TZDATE4%TDATE%YEAR=I4YY;TZDATE4%TDATE%MONTH=I4MM;TZDATE4%TDATE%DAY=I4DD;TZDATE4%TIME=Z4SEC
+         TZDATE1%nyear=I1YY;TZDATE1%nmonth=I1MM;TZDATE1%nday=I1DD;TZDATE1%xtime=Z1SEC
+         TZDATE2%nyear=I2YY;TZDATE2%nmonth=I2MM;TZDATE2%nday=I2DD;TZDATE2%xtime=Z2SEC
+         TZDATE3%nyear=I3YY;TZDATE3%nmonth=I3MM;TZDATE3%nday=I3DD;TZDATE3%xtime=Z3SEC
+         TZDATE4%nyear=I4YY;TZDATE4%nmonth=I4MM;TZDATE4%nday=I4DD;TZDATE4%xtime=Z4SEC
          CALL DATETIME_DISTANCE(TZDATE1,TZDATE2,ZT2)
          CALL DATETIME_DISTANCE(TZDATE1,TZDATE3,ZT3)
          CALL DATETIME_DISTANCE(TZDATE1,TZDATE4,ZT4)
@@ -475,7 +475,7 @@ DO JSV=1,NSV_PP
       !
       !*	2.2 Distance temporelle DEPUIS le debut de rejet.
       !
-      TZDATE%TDATE%YEAR=IDEBYY(JSV);TZDATE%TDATE%MONTH=IDEBMM(JSV);TZDATE%TDATE%DAY=IDEBDD(JSV);TZDATE%TIME=ZDEBSS(JSV)
+      TZDATE%nyear=IDEBYY(JSV);TZDATE%nmonth=IDEBMM(JSV);TZDATE%nday=IDEBDD(JSV);TZDATE%xtime=ZDEBSS(JSV)
       CALL DATETIME_DISTANCE(TZDATE,TDTCUR,ZDEPUIS)
       !
       !
diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90
index 5354a0b37..9b9213708 100644
--- a/src/MNH/phys_paramn.f90
+++ b/src/MNH/phys_paramn.f90
@@ -699,7 +699,7 @@ CALL SUNPOS_n   ( XZENITH, ZCOSZEN, ZSINZEN, ZAZIMSOL )
 !               ------------------------------
 !
     CASE('FIXE')
-      ZTIME = MOD(TDTCUR%TIME +XLON0*240., XDAY)
+      ZTIME = MOD(TDTCUR%xtime +XLON0*240., XDAY)
       IHOUR = INT( ZTIME/3600. )
       IF (IHOUR < 0) IHOUR=IHOUR + 24
       ZDT = ZTIME/3600. - REAL(IHOUR)
diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90
index 92a0d12ff..2aae99351 100644
--- a/src/MNH/prep_ideal_case.f90
+++ b/src/MNH/prep_ideal_case.f90
@@ -1757,10 +1757,10 @@ IF (CSURF =='EXTE') THEN
     TPGDFILE => TINIFILEPGD
   ELSE
   ! ... or read from file.
-    CALL INIT_PGD_SURF_ATM(YSURF_CUR,'MESONH','PGD',                         &
-                            '                            ','      ',&
-                            TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH,  &
-                            TDTCUR%TDATE%DAY, TDTCUR%TIME           )
+    CALL INIT_PGD_SURF_ATM( YSURF_CUR, 'MESONH', 'PGD',               &
+                            '                            ', '      ', &
+                            TDTCUR%nyear, TDTCUR%nmonth,              &
+                            TDTCUR%nday, TDTCUR%xtime                 )
 !
   END IF
   !
diff --git a/src/MNH/prep_surf_mnh.f90 b/src/MNH/prep_surf_mnh.f90
index 0e6c02cfb..ce8b407d2 100644
--- a/src/MNH/prep_surf_mnh.f90
+++ b/src/MNH/prep_surf_mnh.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2004-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2004-2020 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 for details. version 1.
@@ -94,9 +94,8 @@ YATMFILETYPE = HATMFILETYPE
 IF(YATMFILETYPE=='GRIBEX') YATMFILETYPE='GRIB  '
 IF (LEN_TRIM(HATMFILE)==0) YATMFILETYPE='      '
 !
-CALL INIT_PGD_SURF_ATM(YSURF_CUR,'MESONH','PRE',HATMFILE,YATMFILETYPE,  &
-                       TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, &
-                       TDTCUR%TDATE%DAY, TDTCUR%TIME          )
+CALL INIT_PGD_SURF_ATM( YSURF_CUR, 'MESONH', 'PRE', HATMFILE, YATMFILETYPE,    &
+                        TDTCUR%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime )
 CALL PREP_SURF_ATM(YSURF_CUR,'MESONH',HATMFILE,YATMFILETYPE,HATMFILE,YATMFILETYPE,YLCTL)
 IF (PRESENT(OINIFILEOPEN)) THEN
   !This is done here because model dimensions were not known before this call (for PREP_SURFEX)
diff --git a/src/MNH/prep_surfex.f90 b/src/MNH/prep_surfex.f90
index 33b73f410..8493ac43d 100644
--- a/src/MNH/prep_surfex.f90
+++ b/src/MNH/prep_surfex.f90
@@ -161,10 +161,10 @@ IF (YATMFILETYPE=='MESONH') THEN
   CALL IO_Field_read(TZATMFILE,'DTCUR',TDTCUR)
   CALL IO_File_close(TZATMFILE)
 ELSE
-  TDTCUR%TDATE%YEAR = NUNDEF
-  TDTCUR%TDATE%MONTH= NUNDEF
-  TDTCUR%TDATE%DAY  = NUNDEF
-  TDTCUR%TIME       = XUNDEF
+  TDTCUR%nyear  = NUNDEF
+  TDTCUR%nmonth = NUNDEF
+  TDTCUR%nday   = NUNDEF
+  TDTCUR%xtime  = XUNDEF
 END IF
 !
 CALL SURFEX_ALLOC_LIST(1)
diff --git a/src/MNH/profilern.f90 b/src/MNH/profilern.f90
index a311590ff..05f09d328 100644
--- a/src/MNH/profilern.f90
+++ b/src/MNH/profilern.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2002-2020 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 for details. version 1.
@@ -256,7 +256,7 @@ IF (GSTORE) THEN
   tprofiler%tpdates(in)%date%year  = tdtexp%date%year
   tprofiler%tpdates(in)%date%month = tdtexp%date%month
   tprofiler%tpdates(in)%date%day   = tdtexp%date%day
-  tprofiler%tpdates(in)%time       = tdtexp%time + ( in - 1 ) * tprofiler%step
+  tprofiler%tpdates(in)%xtime      = tdtexp%xtime + ( in - 1 ) * tprofiler%step
 #else
   tprofiler%tpdates(in) = tdtcur
 #endif
diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90
index b38be9d78..489250ef7 100644
--- a/src/MNH/read_all_data_grib_case.f90
+++ b/src/MNH/read_all_data_grib_case.f90
@@ -1661,24 +1661,24 @@ END IF
 WRITE (ILUOUT0,'(A)') ' | Reading date'
 CALL GRIB_GET(IGRIB(INUM),'dataDate',IDATE,IRET_GRIB)
 CALL GRIB_GET(IGRIB(INUM),'dataTime',ITIME,IRET_GRIB)
-TPTCUR%TIME=ITIME/100*3600+(ITIME-(ITIME/100)*100)*60
-TPTCUR%TDATE%YEAR=IDATE/10000
-TPTCUR%TDATE%MONTH=INT((IDATE-TPTCUR%TDATE%YEAR*10000)/100)
-TPTCUR%TDATE%DAY=IDATE-TPTCUR%TDATE%YEAR*10000-TPTCUR%TDATE%MONTH*100
+TPTCUR%xtime=ITIME/100*3600+(ITIME-(ITIME/100)*100)*60
+TPTCUR%nyear=IDATE/10000
+TPTCUR%nmonth=INT((IDATE-TPTCUR%nyear*10000)/100)
+TPTCUR%nday=IDATE-TPTCUR%nyear*10000-TPTCUR%nmonth*100
 CALL GRIB_GET(IGRIB(INUM),'startStep',ITIMESTEP,IRET_GRIB)
 CALL GRIB_GET(IGRIB(INUM),'stepUnits',CSTEPUNIT,IRET_GRIB)
 IF (IMODEL==0) THEN
   ITWOZS=0
-  IF ((TPTCUR%TDATE%YEAR ==2000).AND.(TPTCUR%TDATE%MONTH  >11)) ITWOZS=1
-  IF ((TPTCUR%TDATE%YEAR ==2000).AND.(TPTCUR%TDATE%MONTH ==11)) THEN
-    IF ( (TPTCUR%TDATE%DAY   >20 )   .OR.   &
-        ((TPTCUR%TDATE%DAY  ==20 ).AND.(TPTCUR%TIME >=64800 ))) ITWOZS=1
+  IF ((TPTCUR%nyear ==2000).AND.(TPTCUR%nmonth  >11)) ITWOZS=1
+  IF ((TPTCUR%nyear ==2000).AND.(TPTCUR%nmonth ==11)) THEN
+    IF ( (TPTCUR%nday   >20 )   .OR.   &
+        ((TPTCUR%nday  ==20 ).AND.(TPTCUR%xtime >=64800 ))) ITWOZS=1
   END IF
-  IF ( TPTCUR%TDATE%YEAR ==2001 )  ITWOZS=1
-  IF ((TPTCUR%TDATE%YEAR ==2002).AND.(TPTCUR%TDATE%MONTH  <11)) ITWOZS=1
-  IF ((TPTCUR%TDATE%YEAR ==2002).AND.(TPTCUR%TDATE%MONTH ==11)) THEN
-    IF ( (TPTCUR%TDATE%DAY   <24 )   .OR.   &
-        ((TPTCUR%TDATE%DAY  ==25 ).AND.(TPTCUR%TIME  <64800 ))) ITWOZS=1
+  IF ( TPTCUR%nyear ==2001 )  ITWOZS=1
+  IF ((TPTCUR%nyear ==2002).AND.(TPTCUR%nmonth  <11)) ITWOZS=1
+  IF ((TPTCUR%nyear ==2002).AND.(TPTCUR%nmonth ==11)) THEN
+    IF ( (TPTCUR%nday   <24 )   .OR.   &
+        ((TPTCUR%nday  ==25 ).AND.(TPTCUR%xtime  <64800 ))) ITWOZS=1
   END IF
   IF (ITWOZS==1) &
     WRITE(ILUOUT0,*) ' Check that both orography fields on 1st model level and on surface are used.'
@@ -1689,11 +1689,11 @@ CALL MPPDB_CHECK3D(XV_LS,"XV_LS",PRECISION)
 
 SELECT CASE (CSTEPUNIT)       ! Time unit indicator
   CASE ('h')                    !hour
-    TPTCUR%TIME   = TPTCUR%TIME + ITIMESTEP*3600.
+    TPTCUR%xtime = TPTCUR%xtime + ITIMESTEP*3600.
   CASE ('m')                    !minute
-    TPTCUR%TIME   = TPTCUR%TIME + ITIMESTEP*60.
+    TPTCUR%xtime = TPTCUR%xtime + ITIMESTEP*60.
   CASE ('s')                    !minute
-    TPTCUR%TIME   = TPTCUR%TIME + ITIMESTEP
+    TPTCUR%xtime = TPTCUR%xtime + ITIMESTEP
    CASE DEFAULT
     WRITE (ILUOUT0,'(A,A,A)') ' | error CSTEPUNIT=',CSTEPUNIT, ' is different of s,m or h'
 END SELECT
diff --git a/src/MNH/read_surf_mnh.f90 b/src/MNH/read_surf_mnh.f90
index 8e2f8faba..f051ed739 100644
--- a/src/MNH/read_surf_mnh.f90
+++ b/src/MNH/read_surf_mnh.f90
@@ -1739,10 +1739,10 @@ IF (KRESP /=0) THEN
   WRITE(ILUOUT,*) ' '
 ENDIF
 !
-KYEAR  = TZDATETIME%TDATE%YEAR
-KMONTH = TZDATETIME%TDATE%MONTH
-KDAY   = TZDATETIME%TDATE%DAY
-PTIME  = TZDATETIME%TIME
+KYEAR  = TZDATETIME%nyear
+KMONTH = TZDATETIME%nmonth
+KDAY   = TZDATETIME%nday
+PTIME  = TZDATETIME%xtime
 !
 !-------------------------------------------------------------------------------
 END SUBROUTINE READ_SURFT0_MNH
@@ -1877,7 +1877,7 @@ IF (KRESP /=0) THEN
   WRITE(ILUOUT,*) ' '
 ENDIF
 !
-TZFIELD%CMNHNAME   = TRIM(HREC)//'%TIME'
+TZFIELD%CMNHNAME   = TRIM(HREC)//'%xtime'
 TZFIELD%CSTDNAME   = ''
 TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
 TZFIELD%CUNITS     = ''
diff --git a/src/MNH/rel_forcingn.f90 b/src/MNH/rel_forcingn.f90
index f53bda4de..1f1d30d5d 100644
--- a/src/MNH/rel_forcingn.f90
+++ b/src/MNH/rel_forcingn.f90
@@ -162,10 +162,10 @@ IF (GSFIRSTCALL) THEN
   WRITE(UNIT=ILUOUT0,FMT='(" THERE ARE ",I2," REL FORCING FIELDs  AT:")') NRELFRC
   DO JSX_REL = 1 , NRELFRC
     WRITE(UNIT=ILUOUT0,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') &
-      TDTRELFRC(JSX_REL)%TIME,        &
-      TDTRELFRC(JSX_REL)%TDATE%DAY,   &
-      TDTRELFRC(JSX_REL)%TDATE%MONTH, &
-      TDTRELFRC(JSX_REL)%TDATE%YEAR
+      TDTRELFRC(JSX_REL)%xtime,  &
+      TDTRELFRC(JSX_REL)%nday,   &
+      TDTRELFRC(JSX_REL)%nmonth, &
+      TDTRELFRC(JSX_REL)%nyear
   END DO
 
 !*        1.2  find first sounding to be used 
diff --git a/src/MNH/resolved_elecn.f90 b/src/MNH/resolved_elecn.f90
index 1d5ed7d83..de8136492 100644
--- a/src/MNH/resolved_elecn.f90
+++ b/src/MNH/resolved_elecn.f90
@@ -948,11 +948,11 @@ IF (LFLASH_GEOM .AND. LLMA) THEN
 !
   GLMA_FILE = .FALSE.
 !
-  IF (TDTCUR%TIME >= TDTLMA%TIME-PTSTEP .AND. CLMA_FILE(1:5) /= "BEGIN") THEN
+  IF (TDTCUR%xtime >= TDTLMA%xtime-PTSTEP .AND. CLMA_FILE(1:5) /= "BEGIN") THEN
     LWRITE_LMA  = .TRUE.
   END IF
-  IF (TDTCUR%TIME >= TDTLMA%TIME) THEN
-    TDTLMA%TIME = TDTLMA%TIME + XDTLMA
+  IF (TDTCUR%xtime >= TDTLMA%xtime) THEN
+    TDTLMA%xtime = TDTLMA%xtime + XDTLMA
     GLMA_FILE   = .TRUE.
     LWRITE_LMA  = .FALSE.
   END IF
@@ -964,12 +964,12 @@ IF (LFLASH_GEOM .AND. LLMA) THEN
       TZFILE_LMA => NULL()
     ENDIF
 !
-    TDTLMA%TIME = TDTLMA%TIME - XDTLMA
-    WRITE (YNAME,FMT='(3I2.2,A1,3I2.2,A1,I4.4)')                               &
-          ABS(TDTCUR%TDATE%YEAR-2000),TDTCUR%TDATE%MONTH,TDTCUR%TDATE%DAY,'_', &
-            INT(TDTLMA%TIME/3600.),INT(REAL(MOD(INT(TDTLMA%TIME),3600))/60.),  &
-                                      MOD(INT(TDTLMA%TIME),60), '_', INT(XDTLMA)
-    TDTLMA%TIME = MOD(TDTLMA%TIME + XDTLMA,86400.)
+    TDTLMA%xtime = TDTLMA%xtime - XDTLMA
+    WRITE (YNAME,FMT='(3I2.2,A1,3I2.2,A1,I4.4)')                                 &
+          ABS(TDTCUR%nyear-2000),TDTCUR%nmonth,TDTCUR%nday,'_',                  &
+            INT(TDTLMA%xtime/3600.),INT(REAL(MOD(INT(TDTLMA%xtime),3600))/60.),  &
+                                      MOD(INT(TDTLMA%xtime),60), '_', INT(XDTLMA)
+    TDTLMA%xtime = MOD(TDTLMA%xtime + XDTLMA,86400.)
     CLMA_FILE = CEXP//"_SIMLMA_"//YNAME//".dat"
 !
     IF ( IPROC .EQ. 0 ) THEN
diff --git a/src/MNH/set_advfrc.f90 b/src/MNH/set_advfrc.f90
index 954d6fb96..395660c88 100644
--- a/src/MNH/set_advfrc.f90
+++ b/src/MNH/set_advfrc.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 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 for details. version 1.
@@ -208,10 +208,10 @@ print*,"!  3.   READ ASCII FILES FOR ADVECTIVE FORCING "
 DO JKT = 1,NADVFRC
 !
 !   Reading the date and the filename  of mean state and frc
-    READ(ILUPRE,*) TDTADVFRC(JKT)%TDATE%YEAR,  &
-                   TDTADVFRC(JKT)%TDATE%MONTH, &
-                   TDTADVFRC(JKT)%TDATE%DAY,   &
-                   TDTADVFRC(JKT)%TIME
+    READ(ILUPRE,*) TDTADVFRC(JKT)%nyear,  &
+                   TDTADVFRC(JKT)%nmonth, &
+                   TDTADVFRC(JKT)%nday,   &
+                   TDTADVFRC(JKT)%xtime
 !                   ; Read filenames
     READ(ILUPRE,*)  CFNAM_MEANVAR_ADV  
     READ(ILUPRE,*)  CFNAM_ADV
@@ -318,10 +318,10 @@ print*,"!*        3.    PRINT FORCING FIELDS"
 WRITE(UNIT=ILUOUT,FMT='(" THERE ARE ",I2," ADV FORCING AT:")') NADVFRC
 DO JL = 1 , NADVFRC
   WRITE(UNIT=ILUOUT,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') &
-    TDTADVFRC(JL)%TIME, &
-    TDTADVFRC(JL)%TDATE%DAY,   &
-    TDTADVFRC(JL)%TDATE%MONTH, &
-    TDTADVFRC(JL)%TDATE%YEAR
+    TDTADVFRC(JL)%xtime,  &
+    TDTADVFRC(JL)%nday,   &
+    TDTADVFRC(JL)%nmonth, &
+    TDTADVFRC(JL)%nyear
 END DO
 !
 DO JKT = 2,NADVFRC-1
@@ -331,15 +331,15 @@ DO JKT = 2,NADVFRC-1
     WRITE(ILUOUT,*) &
       "               soundings have to be entered in increasing temporal order"
     WRITE(ILUOUT,*) "SOUNDING TIME ", JKT-1, " IS: "
-    WRITE(ILUOUT,*) TDTADVFRC(JKT-1)%TDATE%YEAR,  &
-                    TDTADVFRC(JKT-1)%TDATE%MONTH, &
-                    TDTADVFRC(JKT-1)%TDATE%DAY,   &
-                    TDTADVFRC(JKT-1)%TIME
+    WRITE(ILUOUT,*) TDTADVFRC(JKT-1)%nyear,  &
+                    TDTADVFRC(JKT-1)%nmonth, &
+                    TDTADVFRC(JKT-1)%nday,   &
+                    TDTADVFRC(JKT-1)%xtime
     WRITE(ILUOUT,*) "SOUNDING TIME ", JKT, " IS: "
-    WRITE(ILUOUT,*) TDTADVFRC(JKT)%TDATE%YEAR,  &
-                    TDTADVFRC(JKT)%TDATE%MONTH, &
-                    TDTADVFRC(JKT)%TDATE%DAY,   &
-                    TDTADVFRC(JKT)%TIME
+    WRITE(ILUOUT,*) TDTADVFRC(JKT)%nyear,  &
+                    TDTADVFRC(JKT)%nmonth, &
+                    TDTADVFRC(JKT)%nday,   &
+                    TDTADVFRC(JKT)%xtime
  !callabortstop
     CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_ADVFRC','')
   END IF
diff --git a/src/MNH/set_frc.f90 b/src/MNH/set_frc.f90
index 8744c8d9d..6c49fbbf2 100644
--- a/src/MNH/set_frc.f90
+++ b/src/MNH/set_frc.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2020 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 for details. version 1.
@@ -224,10 +224,10 @@ DO JKT = 1,NFRC
   WRITE(UNIT=ILUOUT,FMT='(A, I4)') "SET_FRC: start reading forcing field ", JKT
 !
   IF( YZP=='ZFRC' ) THEN
-    READ(ILUPRE,*) TDTFRC(JKT)%TDATE%YEAR,  &
-                   TDTFRC(JKT)%TDATE%MONTH, &
-                   TDTFRC(JKT)%TDATE%DAY,   &
-                   TDTFRC(JKT)%TIME
+    READ(ILUPRE,*) TDTFRC(JKT)%nyear,  &
+                   TDTFRC(JKT)%nmonth, &
+                   TDTFRC(JKT)%nday,   &
+                   TDTFRC(JKT)%xtime
     READ(ILUPRE,*) ZZGROUNDF  ! data at ground level
     READ(ILUPRE,*) ZPGROUNDF
     READ(ILUPRE,*) ZTHDGROUNDF
@@ -267,10 +267,10 @@ DO JKT = 1,NFRC
   END IF
 !
   IF( YZP=='PFRC' ) THEN
-    READ(ILUPRE,*) TDTFRC(JKT)%TDATE%YEAR,  &
-                   TDTFRC(JKT)%TDATE%MONTH, &
-                   TDTFRC(JKT)%TDATE%DAY,   &
-                   TDTFRC(JKT)%TIME
+    READ(ILUPRE,*) TDTFRC(JKT)%nyear,  &
+                   TDTFRC(JKT)%nmonth, &
+                   TDTFRC(JKT)%nday,   &
+                   TDTFRC(JKT)%xtime
 !
     READ(ILUPRE,*) ZZGROUNDF  ! data at ground level
     READ(ILUPRE,*) ZPGROUNDF
@@ -453,15 +453,15 @@ DO JKT = 2,NFRC-1
     WRITE(ILUOUT,*) &
       "               soundings have to be entered in increasing temporal order"
     WRITE(ILUOUT,*) "SOUNDING TIME ", JKT-1, " IS: "
-    WRITE(ILUOUT,*) TDTFRC(JKT-1)%TDATE%YEAR,  &
-                    TDTFRC(JKT-1)%TDATE%MONTH, &
-                    TDTFRC(JKT-1)%TDATE%DAY,   &
-                    TDTFRC(JKT-1)%TIME
+    WRITE(ILUOUT,*) TDTFRC(JKT-1)%nyear,  &
+                    TDTFRC(JKT-1)%nmonth, &
+                    TDTFRC(JKT-1)%nday,   &
+                    TDTFRC(JKT-1)%xtime
     WRITE(ILUOUT,*) "SOUNDING TIME ", JKT, " IS: "
-    WRITE(ILUOUT,*) TDTFRC(JKT)%TDATE%YEAR,  &
-                    TDTFRC(JKT)%TDATE%MONTH, &
-                    TDTFRC(JKT)%TDATE%DAY,   &
-                    TDTFRC(JKT)%TIME
+    WRITE(ILUOUT,*) TDTFRC(JKT)%nyear,  &
+                    TDTFRC(JKT)%nmonth, &
+                    TDTFRC(JKT)%nday,   &
+                    TDTFRC(JKT)%xtime
  !callabortstop
   CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_FRC','')
   END IF
@@ -524,10 +524,10 @@ END DO
 WRITE(UNIT=ILUOUT,FMT='(" THERE ARE ",I2," FORCING SOUNDINGS AT:")') NFRC
 DO JL = 1 , NFRC
   WRITE(UNIT=ILUOUT,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') &
-    TDTFRC(JL)%TIME,        &
-    TDTFRC(JL)%TDATE%DAY,   &
-    TDTFRC(JL)%TDATE%MONTH, &
-    TDTFRC(JL)%TDATE%YEAR
+    TDTFRC(JL)%xtime,  &
+    TDTFRC(JL)%nday,   &
+    TDTFRC(JL)%nmonth, &
+    TDTFRC(JL)%nyear
 END DO
 !
 IF (NVERB >= 10) THEN
diff --git a/src/MNH/set_relfrc.f90 b/src/MNH/set_relfrc.f90
index 6de7d389e..d53c5ae36 100644
--- a/src/MNH/set_relfrc.f90
+++ b/src/MNH/set_relfrc.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2020 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 for details. version 1.
@@ -217,10 +217,10 @@ DO JKT = 1,NRELFRC
 
 
 !   Reading the date and the filename  of mean state and frc
-    READ(ILUPRE,*) TDTRELFRC(JKT)%TDATE%YEAR,  &
-                   TDTRELFRC(JKT)%TDATE%MONTH, &
-                   TDTRELFRC(JKT)%TDATE%DAY,   &
-                   TDTRELFRC(JKT)%TIME
+    READ(ILUPRE,*) TDTRELFRC(JKT)%nyear,  &
+                   TDTRELFRC(JKT)%nmonth, &
+                   TDTRELFRC(JKT)%nday,   &
+                   TDTRELFRC(JKT)%xtime
 !                   ; Read filenames
     READ(ILUPRE,*)  CFNAM_MEANVAR_REL  
     READ(ILUPRE,*)  CFNAM_REL
@@ -341,10 +341,10 @@ END DO ! End of loop in time
 WRITE(UNIT=ILUOUT,FMT='(" THERE ARE ",I2," REL FORCING AT:")') NRELFRC
 DO JL = 1 , NRELFRC
   WRITE(UNIT=ILUOUT,FMT='(F9.0, "s, date:", I3, "/", I3, "/", I5)') &
-    TDTRELFRC(JL)%TIME, &
-    TDTRELFRC(JL)%TDATE%DAY,   &
-    TDTRELFRC(JL)%TDATE%MONTH, &
-    TDTRELFRC(JL)%TDATE%YEAR
+    TDTRELFRC(JL)%xtime,  &
+    TDTRELFRC(JL)%nday,   &
+    TDTRELFRC(JL)%nmonth, &
+    TDTRELFRC(JL)%nyear
 END DO
 !
 DO JKT = 2,NRELFRC-1
@@ -354,15 +354,15 @@ DO JKT = 2,NRELFRC-1
     WRITE(ILUOUT,*) &
       "               soundings have to be entered in increasing temporal order"
     WRITE(ILUOUT,*) "SOUNDING TIME ", JKT-1, " IS: "
-    WRITE(ILUOUT,*) TDTRELFRC(JKT-1)%TDATE%YEAR,  &
-                    TDTRELFRC(JKT-1)%TDATE%MONTH, &
-                    TDTRELFRC(JKT-1)%TDATE%DAY,   &
-                    TDTRELFRC(JKT-1)%TIME
+    WRITE(ILUOUT,*) TDTRELFRC(JKT-1)%nyear,  &
+                    TDTRELFRC(JKT-1)%nmonth, &
+                    TDTRELFRC(JKT-1)%nday,   &
+                    TDTRELFRC(JKT-1)%xtime
     WRITE(ILUOUT,*) "SOUNDING TIME ", JKT, " IS: "
-    WRITE(ILUOUT,*) TDTRELFRC(JKT)%TDATE%YEAR,  &
-                    TDTRELFRC(JKT)%TDATE%MONTH, &
-                    TDTRELFRC(JKT)%TDATE%DAY,   &
-                    TDTRELFRC(JKT)%TIME
+    WRITE(ILUOUT,*) TDTRELFRC(JKT)%nyear,  &
+                    TDTRELFRC(JKT)%nmonth, &
+                    TDTRELFRC(JKT)%nday,   &
+                    TDTRELFRC(JKT)%xtime
  !callabortstop
     CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RELFRC','')
   END IF
diff --git a/src/MNH/spawn_surf.f90 b/src/MNH/spawn_surf.f90
index deee96b3b..11f53dd21 100644
--- a/src/MNH/spawn_surf.f90
+++ b/src/MNH/spawn_surf.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2004-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2004-2020 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 for details. version 1.
@@ -133,9 +133,8 @@ IF (CSURF=='EXTE') THEN
     ALLOCATE(YSURF_CUR%DUO%CSELECT(0))
     CALL WRITE_PGD_SURF_ATM_n(YSURF_CUR,'MESONH')
     !* rereading of physiographic fields and definition of prognostic fields
-    CALL INIT_PGD_SURF_ATM(YSURF_CUR,'MESONH','PRE',HINIFILE,'MESONH',      &
-                           TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, &
-                           TDTCUR%TDATE%DAY, TDTCUR%TIME          )
+    CALL INIT_PGD_SURF_ATM( YSURF_CUR, 'MESONH', 'PRE', HINIFILE, 'MESONH',        &
+                            TDTCUR%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime )
     CALL PREP_SURF_ATM(YSURF_CUR,'MESONH',HINIFILE,'MESONH',HINIFILEPGD,'MESONH',YLCTL)
     !* writing of all surface fields
     CALL WRITE_SURF_ATM_n(YSURF_CUR,'MESONH','ALL',.FALSE.)
diff --git a/src/MNH/stationn.f90 b/src/MNH/stationn.f90
index ad4ca3b71..9af464af4 100644
--- a/src/MNH/stationn.f90
+++ b/src/MNH/stationn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2002-2020 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 for details. version 1.
@@ -202,7 +202,7 @@ IF (GSTORE) THEN
   tstation%tpdates(in)%date%year  = tdtexp%date%year
   tstation%tpdates(in)%date%month = tdtexp%date%month
   tstation%tpdates(in)%date%day   = tdtexp%date%day
-  tstation%tpdates(in)%time       = tdtexp%time + ( in - 1 ) * tstation%step
+  tstation%tpdates(in)%xtime      = tdtexp%xtime + ( in - 1 ) * tstation%step
 #else
   tstation%tpdates(in) = tdtcur
 #endif
diff --git a/src/MNH/sunposn.f90 b/src/MNH/sunposn.f90
index 256ed7616..6a3172abe 100644
--- a/src/MNH/sunposn.f90
+++ b/src/MNH/sunposn.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2020 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 rad 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     ####################
       MODULE MODI_SUNPOS_n
 !     ####################
@@ -134,7 +129,7 @@ END IF
 !*       2.    COMPUTES THE TRUE SOLAR TIME
 !              ----------------------------
 !
-ZTIME     = TDTRAD_FULL%TIME + 0.5*XDTRAD
+ZTIME     = TDTRAD_FULL%xtime + 0.5*XDTRAD
 
 
 ZUT       = MOD( 24.0+MOD(ZTIME/3600.,24.0),24.0 )
diff --git a/src/MNH/write_budget.f90 b/src/MNH/write_budget.f90
index 553d53535..18e2b56ba 100644
--- a/src/MNH/write_budget.f90
+++ b/src/MNH/write_budget.f90
@@ -190,10 +190,10 @@ subroutine Write_budget( tpdiafile, tpdtcur, ptstep, ksv )
   !
       ZWORKTEMP(1)=ZWORKTEMP(1)+(1.-NBUSTEP*0.5)*PTSTEP
   !
-      tzdates(1)%tdate%year  = tdtexp%tdate%year
-      tzdates(1)%tdate%month = tdtexp%tdate%month
-      tzdates(1)%tdate%day   = tdtexp%tdate%day
-      tzdates(1)%time        = tdtexp%time + zworktemp(1)
+      tzdates(1)%nyear  = tdtexp%nyear
+      tzdates(1)%nmonth = tdtexp%nmonth
+      tzdates(1)%nday   = tdtexp%nday
+      tzdates(1)%xtime  = tdtexp%xtime + zworktemp(1)
 
       DEALLOCATE ( ZWORKTEMP )
   !
@@ -210,16 +210,16 @@ subroutine Write_budget( tpdiafile, tpdtcur, ptstep, ksv )
   !
       ZWORKTEMP(NBUWRNB)=ZWORKTEMP(NBUWRNB)+(1.-NBUSTEP*0.5)*PTSTEP
   !
-      tzdates(NBUWRNB)%tdate%year  = tdtexp%tdate%year
-      tzdates(NBUWRNB)%tdate%month = tdtexp%tdate%month
-      tzdates(NBUWRNB)%tdate%day   = tdtexp%tdate%day
-      tzdates(NBUWRNB)%time        = tdtexp%time + zworktemp(NBUWRNB)
+      tzdates(NBUWRNB)%nyear  = tdtexp%nyear
+      tzdates(NBUWRNB)%nmonth = tdtexp%nmonth
+      tzdates(NBUWRNB)%nday   = tdtexp%nday
+      tzdates(NBUWRNB)%xtime  = tdtexp%xtime + zworktemp(NBUWRNB)
       DO JT=1,NBUWRNB-1
         ZWORKTEMP(JT) = ZWORKTEMP(NBUWRNB)-NBUSTEP*PTSTEP*(NBUWRNB-JT)
-        tzdates(jt)%tdate%year  = tdtexp%tdate%year
-        tzdates(jt)%tdate%month = tdtexp%tdate%month
-        tzdates(jt)%tdate%day   = tdtexp%tdate%day
-        tzdates(jt)%time        = tdtexp%time + zworktemp(jt)
+        tzdates(jt)%nyear  = tdtexp%nyear
+        tzdates(jt)%nmonth = tdtexp%nmonth
+        tzdates(jt)%nday   = tdtexp%nday
+        tzdates(jt)%xtime  = tdtexp%xtime + zworktemp(jt)
       END DO
 
       DEALLOCATE( ZWORKTEMP )
diff --git a/src/MNH/write_diachro.f90 b/src/MNH/write_diachro.f90
index 7f0b0a0d3..7b320fa3c 100644
--- a/src/MNH/write_diachro.f90
+++ b/src/MNH/write_diachro.f90
@@ -592,22 +592,22 @@ TZFIELD%LTIMEDEP   = .FALSE.
 !Reconstitute old diachro format
 allocate( zdatime( 16, size(tpdates) ) )
 
-zdatime(1,  : ) = tdtexp%tdate%year
-zdatime(2,  : ) = tdtexp%tdate%month
-zdatime(3,  : ) = tdtexp%tdate%day
-zdatime(4,  : ) = tdtexp%time
-zdatime(5,  : ) = tdtseg%tdate%year
-zdatime(6,  : ) = tdtseg%tdate%month
-zdatime(7,  : ) = tdtseg%tdate%day
-zdatime(8,  : ) = tdtseg%time
-zdatime(9,  : ) = tdtmod%tdate%year
-zdatime(10, : ) = tdtmod%tdate%month
-zdatime(11, : ) = tdtmod%tdate%day
-zdatime(12, : ) = tdtmod%time
-zdatime(13, : ) = tpdates(:)%tdate%year
-zdatime(14, : ) = tpdates(:)%tdate%month
-zdatime(15, : ) = tpdates(:)%tdate%day
-zdatime(16, : ) = tpdates(:)%time
+zdatime(1,  : ) = tdtexp%nyear
+zdatime(2,  : ) = tdtexp%nmonth
+zdatime(3,  : ) = tdtexp%nday
+zdatime(4,  : ) = tdtexp%xtime
+zdatime(5,  : ) = tdtseg%nyear
+zdatime(6,  : ) = tdtseg%nmonth
+zdatime(7,  : ) = tdtseg%nday
+zdatime(8,  : ) = tdtseg%xtime
+zdatime(9,  : ) = tdtmod%nyear
+zdatime(10, : ) = tdtmod%nmonth
+zdatime(11, : ) = tdtmod%nday
+zdatime(12, : ) = tdtmod%xtime
+zdatime(13, : ) = tpdates(:)%nyear
+zdatime(14, : ) = tpdates(:)%nmonth
+zdatime(15, : ) = tpdates(:)%nday
+zdatime(16, : ) = tpdates(:)%xtime
 
 call IO_Field_write( tzfile, tzfield, zdatime )
 
diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90
index 7008f40e5..1f5bbee65 100644
--- a/src/MNH/write_lfifm1_for_diag_supp.f90
+++ b/src/MNH/write_lfifm1_for_diag_supp.f90
@@ -801,12 +801,12 @@ IF (LEN_TRIM(CRAD_SAT) /= 0 .AND. NRR /=0) THEN
   DO JI=1,ITOTGEO
     ZIRBT(:,:) = XUNDEF
     ZWVBT(:,:) = XUNDEF
-    CALL RADTR_SATEL(TDTCUR%TDATE%YEAR,TDTCUR%TDATE%MONTH,TDTCUR%TDATE%DAY, &
-                     TDTCUR%TIME, NDLON, NFLEV, NSTATM, NRAD_COLNBR, XEMIS(:,:,1), &
-                     XCCO2, XTSRAD, XSTATM, XTHT, XRT, XPABST, XZZ,         &
-                     XSIGS, XMFCONV, XCLDFR, LUSERI, LSIGMAS,               &
-                     LSUBG_COND, LRAD_SUBG_COND, ZIRBT, ZWVBT,              &
-                     INDGEO(JI),VSIGQSAT ) 
+    CALL RADTR_SATEL( TDTCUR%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime, &
+                      NDLON, NFLEV, NSTATM, NRAD_COLNBR, XEMIS(:,:,1),        &
+                      XCCO2, XTSRAD, XSTATM, XTHT, XRT, XPABST, XZZ,          &
+                      XSIGS, XMFCONV, XCLDFR, LUSERI, LSIGMAS,                &
+                      LSUBG_COND, LRAD_SUBG_COND, ZIRBT, ZWVBT,               &
+                      INDGEO(JI), VSIGQSAT                                    )
     !
     TZFIELD%CMNHNAME   = TRIM(YNAM_SAT(JI))//'_IRBT'
     TZFIELD%CSTDNAME   = ''
diff --git a/src/MNH/write_surf_mnh.f90 b/src/MNH/write_surf_mnh.f90
index ad6ba8fb0..58e08d8dc 100644
--- a/src/MNH/write_surf_mnh.f90
+++ b/src/MNH/write_surf_mnh.f90
@@ -1430,8 +1430,10 @@ IF( HREC=='DTCUR' .AND. CSTORAGE_TYPE/='SU' ) THEN
   CALL PRINT_MSG(NVERB_DEBUG,'IO','WRITE_SURFT0_MNH',TRIM(HREC)//' not written in file by externalized surface')
   RETURN
 ELSE
-  TZDATA%TDATE = DATE(KYEAR,KMONTH,KDAY)
-  TZDATA%TIME  = PTIME
+  TZDATA%nyear  = kyear
+  TZDATA%nmonth = kmonth
+  TZDATA%nday   = kday
+  TZDATA%xtime  = PTIME
   !  
   CALL PREPARE_METADATA_WRITE_SURF(HREC,'--',HCOMMENT,0,TYPEDATE,0,'WRITE_SURFT0_MNH',TZFIELD)
   CALL IO_Field_write(TFILE_SURFEX,TZFIELD,TZDATA,KRESP)
@@ -1543,7 +1545,7 @@ ELSE
     CALL PRINT_MSG(NVERB_ERROR,'IO','WRITE_SURFT1_MNH','error when writing article '//TRIM(HREC)//' KRESP='//YMSG)
   END IF
   !
-  TZFIELD%CMNHNAME   = TRIM(HREC)//'%TIME'
+  TZFIELD%CMNHNAME   = TRIM(HREC)//'%xtime'
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
   TZFIELD%CUNITS     = ''
diff --git a/src/MNH/write_ts1d.f90 b/src/MNH/write_ts1d.f90
index ab625577a..440d7303f 100644
--- a/src/MNH/write_ts1d.f90
+++ b/src/MNH/write_ts1d.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2020 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 for details. version 1.
@@ -43,7 +43,7 @@
 !!    Original 12/10/95
 !!    Add U, V, W, all water variables and all tracers to timeseries (KS)
 !!     27/10/95 KS: add air density
-!!     09/02/96 KS: change time to TDTSEG%TIME + ISCOUNT * XTSTEP
+!!     09/02/96 KS: change time to TDTSEG%xtime + ISCOUNT * XTSTEP
 !!                 & grid identifier all set to 1 (mass levels)
 !!     01/03/96 KS: remove air density
 !!                  write variables every 900s to disk, regardless of XTSTEP
@@ -161,14 +161,14 @@ TZFILE => NULL()
 NBPROF = 0
 
 CALL DATETIME_DISTANCE(TDTEXP,TDTCUR,ZTIME)
-ZTIME = ZTIME + TDTEXP%TIME
+ZTIME = ZTIME + TDTEXP%xtime
 CALL GET_DIM_EXT_ll ('B',IIU,IJU)
 
 IF ((CPROGRAM =='DIAG  ').AND.(LCHEMDIAG)) THEN
-  WRITE(YCYEAR,'(I4.4)')  TDTCUR%TDATE%YEAR
-  WRITE(YCMONTH,'(I2.2)') TDTCUR%TDATE%MONTH
-  WRITE(YCDAY,'(I2.2)')   TDTCUR%TDATE%DAY
-  IUTIME = INT(3600*MOD( 24.0+MOD((TDTCUR%TIME)/3600.,24.0),24.0 ))  ! TU 
+  WRITE(YCYEAR,'(I4.4)')  TDTCUR%nyear
+  WRITE(YCMONTH,'(I2.2)') TDTCUR%nmonth
+  WRITE(YCDAY,'(I2.2)')   TDTCUR%nday
+  IUTIME = INT(3600*MOD( 24.0+MOD((TDTCUR%xtime)/3600.,24.0),24.0 ))  ! TU
   WRITE(YCTIME,'(I5.5)')  IUTIME
 
 
-- 
GitLab