diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
index 7c43d3df6d4c643a2f2360f714f8789e615f851e..01d871f75510d95cb732139cb95a241e91edd56a 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
@@ -375,6 +375,9 @@ END DO
             CALL IO_GUESS_DIMIDS_NC4(outfiles(idx_out)%TFILE,tpreclist(ji)%TFIELD,&
                                      tpreclist(ji)%NSIZE,tpreclist(ji)%TDIMS,IRESP)
           ELSE !If we read netCDF4, we already have all necessary data
+            !Special case for EMIS (only the first band is read/written) -> NDIMS reduced to 2
+            if(tpreclist(ji)%TFIELD%CMNHNAME=="EMIS") tpreclist(ji)%TFIELD%NDIMS = 2
+
             CALL IO_FILL_DIMS_NC4(outfiles(idx_out)%TFILE,tpreclist(ji),IRESP)
           ENDIF
           IF (IRESP/=0) THEN
@@ -657,6 +660,7 @@ END DO
     INTEGER                                  :: INSRC
     INTEGER                                  :: ISRC
     INTEGER(KIND=IDCDF_KIND),DIMENSION(NF90_MAX_VAR_DIMS) :: IDIMLEN
+    logical,dimension(knaf)                  :: gtimedep_in, gtimedep_out
 
     CHARACTER(LEN=:),       ALLOCATABLE :: YTAB0D
     INTEGER,DIMENSION(:),   ALLOCATABLE :: ITAB1D, ITAB1D2
@@ -671,6 +675,16 @@ END DO
 
     CALL PRINT_MSG(NVERB_DEBUG,'IO','fill_files','called')
 
+    ! For versions of MesoNH <5.4.0, fields were not stored with a time dimension
+    ! ->necessary to remove it when reading and to restore to the correct one when writing
+    if( infiles(1)%TFILE%NMNHVERSION(1)<5 .OR. &
+       (infiles(1)%TFILE%NMNHVERSION(1)==5 .AND. infiles(1)%TFILE%NMNHVERSION(2)<4) ) then
+      gtimedep_in(:)  = .false.
+    else
+      gtimedep_in(:)  = tpreclist(:)%TFIELD%LTIMEDEP
+    end if
+    gtimedep_out(:)   = tpreclist(:)%TFIELD%LTIMEDEP
+
     idx = 1
     DO ji=1,knaf
       IF (.NOT.tpreclist(ji)%tbw) CYCLE
@@ -689,6 +703,7 @@ END DO
           ISRC  = tpreclist(ji)%src(1)
         END IF
 
+        tpreclist(ISRC)%TFIELD%LTIMEDEP = gtimedep_in(ISRC)
         SELECT CASE(IDIMS)
         CASE (0)
           ALLOCATE(ITAB1D(1))
@@ -710,6 +725,7 @@ END DO
 
         DO JJ=2,INSRC
           ISRC = tpreclist(ji)%src(jj)
+          tpreclist(ISRC)%TFIELD%LTIMEDEP = gtimedep_in(ISRC)
 
           SELECT CASE(IDIMS)
           CASE (0)
@@ -724,6 +740,7 @@ END DO
           END SELECT
         END DO
 
+        tpreclist(ji)%TFIELD%LTIMEDEP = gtimedep_out(ji)
         SELECT CASE(IDIMS)
         CASE (0)
           CALL IO_WRITE_FIELD(outfiles(idx)%TFILE,tpreclist(ji)%TFIELD,ITAB1D(1))
@@ -740,23 +757,26 @@ END DO
         END SELECT
 
 
-        CASE (TYPELOG)
+      CASE (TYPELOG)
         IDIMLEN(1:IDIMS) = tpreclist(ji)%TDIMS(1:IDIMS)%LEN
 
+        tpreclist(ji)%TFIELD%LTIMEDEP = gtimedep_in(ji)
         SELECT CASE(IDIMS)
         CASE (0)
           ALLOCATE(GTAB1D(1))
           CALL IO_READ_FIELD (INFILES(1)%TFILE,   tpreclist(ji)%TFIELD,GTAB1D(1))
+          tpreclist(ji)%TFIELD%LTIMEDEP = gtimedep_out(ji)
           CALL IO_WRITE_FIELD(outfiles(idx)%TFILE,tpreclist(ji)%TFIELD,GTAB1D(1))
           DEALLOCATE(GTAB1D)
         CASE (1)
           ALLOCATE(GTAB1D(IDIMLEN(1)))
           CALL IO_READ_FIELD (INFILES(1)%TFILE,   tpreclist(ji)%TFIELD,GTAB1D)
+          tpreclist(ji)%TFIELD%LTIMEDEP = gtimedep_out(ji)
           CALL IO_WRITE_FIELD(outfiles(idx)%TFILE,tpreclist(ji)%TFIELD,GTAB1D)
           DEALLOCATE(GTAB1D)
         CASE DEFAULT
           CALL PRINT_MSG(NVERB_WARNING,'IO','fill_files','too many dimensions for ' &
-                         //TRIM(tpreclist(ISRC)%name)//' => ignored')
+                         //TRIM(tpreclist(ji)%name)//' => ignored')
           CYCLE
         END SELECT
 
@@ -772,6 +792,7 @@ END DO
           ISRC  = tpreclist(ji)%src(1)
         END IF
 
+        tpreclist(ISRC)%TFIELD%LTIMEDEP = gtimedep_in(ISRC)
         SELECT CASE(IDIMS)
         CASE (0)
           ALLOCATE(XTAB1D(1))
@@ -801,6 +822,7 @@ END DO
 
         DO JJ=2,INSRC
           ISRC = tpreclist(ji)%src(jj)
+          tpreclist(ISRC)%TFIELD%LTIMEDEP = gtimedep_in(ISRC)
 
           SELECT CASE(IDIMS)
           CASE (0)
@@ -821,6 +843,7 @@ END DO
           END SELECT
         END DO
 
+        tpreclist(ji)%TFIELD%LTIMEDEP = gtimedep_out(ji)
         SELECT CASE(IDIMS)
         CASE (0)
           CALL IO_WRITE_FIELD(outfiles(idx)%TFILE,tpreclist(ji)%TFIELD,XTAB1D(1))
@@ -855,7 +878,9 @@ END DO
         END IF
 
         ALLOCATE(CHARACTER(LEN=tpreclist(ji)%NSIZE)::YTAB0D)
+        tpreclist(ji)%TFIELD%LTIMEDEP = gtimedep_in(ji)
         CALL IO_READ_FIELD (INFILES(1)%TFILE,   tpreclist(ji)%TFIELD,YTAB0D)
+        tpreclist(ji)%TFIELD%LTIMEDEP = gtimedep_out(ji)
         CALL IO_WRITE_FIELD(outfiles(idx)%TFILE,tpreclist(ji)%TFIELD,YTAB0D)
         DEALLOCATE(YTAB0D)
 
@@ -868,7 +893,9 @@ END DO
                          //TRIM(tpreclist(ISRC)%name)//' => ignored')
           CYCLE
         END IF
+        tpreclist(ji)%TFIELD%LTIMEDEP = gtimedep_in(ji)
         CALL IO_READ_FIELD (INFILES(1)%TFILE,   tpreclist(ji)%TFIELD%CMNHNAME,TZDATE)
+        tpreclist(ji)%TFIELD%LTIMEDEP = gtimedep_out(ji)
         CALL IO_WRITE_FIELD(outfiles(idx)%TFILE,tpreclist(ji)%TFIELD,TZDATE)