diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
index b50ea0c14b99c8b80d0b4fb85e5b900058330cd3..b0969a2bee2c6232c1e20520799913487219362d 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
@@ -49,6 +49,7 @@ MODULE mode_util
      LOGICAL                                 :: tbr    ! to be read or not
      INTEGER,DIMENSION(MAXRAW)               :: src    ! List of variables used to compute the variable (needed only if calc=.true.)
      INTEGER                                 :: tgt    ! Target: id of the variable that use it (calc variable)
+     TYPE(TFIELDDATA)                        :: TFIELD ! Metadata about the field
   END TYPE workfield
 
   LOGICAL(KIND=LFI_INT), PARAMETER :: ltrue  = .TRUE.
@@ -341,6 +342,22 @@ END DO
              END IF
            END IF
          END DO
+         !
+         ! Check if variable is in TFIELDLIST and populate corresponding metadata
+         DO ji=1,nbvar_infile
+           IF (.NOT.tpreclist(ji)%found) CYCLE
+           !
+           CALL FIND_FIELD_ID_FROM_MNHNAME(tpreclist(ji)%name,IID,IRESP)
+           IF (IRESP==0) THEN
+             tpreclist(ji)%TFIELD = TFIELDLIST(IID)
+           ELSE !Field not found in list
+             CALL PRINT_MSG(NVERB_WARNING,'IO','parse_infiles','variable '//TRIM(tpreclist(ji)%name)//' is not known => ignored')
+             tpreclist(ji)%tbw   = .FALSE.
+             tpreclist(ji)%tbr   = .FALSE.
+             tpreclist(ji)%found = .FALSE.
+           END IF
+         END DO
+         !
        ELSE IF (infiles%files(1)%format == NETCDF_FORMAT) THEN
          DO ji=1,nbvar_infile
            tpreclist(ji)%id_in = ji
@@ -1104,32 +1121,32 @@ END DO
 
 
        SELECT CASE(tpreclist(ivar)%TYPE)
-       CASE(INT,BOOL)
+       CASE(TYPEINT,TYPELOG)
           ALLOCATE( itab3d(idims(1),idims(2),idims(3)) )
           status = NF90_GET_VAR(kcdf_id,tpreclist(ivar)%id_in,itab3d)
           IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__)
 
-!          PRINT *,'INT,BOOL --> ',tpreclist(ivar)%name,',len = ',idlen
+!          PRINT *,'TYPEINT,TYPELOG --> ',tpreclist(ivar)%name,',len = ',idlen
           idata(1:idlen) = RESHAPE( itab3d , (/ idims(1)*idims(2)*idims(3) /) )
 
           DEALLOCATE(itab3d)
 
-       CASE(FLOAT)
+       CASE(TYPEREAL)
           ALLOCATE( xtab3d(idims(1),idims(2),idims(3)) )
           status = NF90_GET_VAR(kcdf_id,tpreclist(ivar)%id_in,xtab3d)
           IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__)
 
-!          PRINT *,'FLOAT -->    ',tpreclist(ivar)%name,',len = ',idlen
+!          PRINT *,'TYPEREAL -->    ',tpreclist(ivar)%name,',len = ',idlen
           idata(1:idlen) = RESHAPE( TRANSFER(xtab3d,(/ 0_8 /),idlen) , (/ idims(1)*idims(2)*idims(3) /) )
 
           DEALLOCATE(xtab3d)
 
-       CASE(TEXT)
+       CASE(TYPECHAR)
           ALLOCATE(ytab(idlen))
           status = NF90_GET_VAR(kcdf_id,tpreclist(ivar)%id_in,ytab)
           IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__)
 
-!          PRINT *,'TEXT -->     ',tpreclist(ivar)%name,',len = ',idlen
+!          PRINT *,'TYPECHAR -->     ',tpreclist(ivar)%name,',len = ',idlen
           DO jj=1,idlen
              idata(jj) = ICHAR(ytab(jj))
           END DO