diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
index 5614e45ee1af7209f3edd1fb9763ffb56b9397e6..c967a7961275d7a20dc649038517033ea4343a93 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
@@ -1,8 +1,11 @@
 MODULE mode_util
-  USE MODE_FIELDTYPE
+  USE MODD_IO_ll, ONLY: TFILE_ELT
+  USE MODD_PARAM
+
   USE mode_dimlist
+  USE MODE_FIELDTYPE
   USE mode_options
-  USE MODD_PARAM
+
   USE netcdf
 
   IMPLICIT NONE 
@@ -27,6 +30,7 @@ MODULE mode_util
     INTEGER :: nbfiles = 0
 !    TYPE(filestruct),DIMENSION(:),ALLOCATABLE :: files
     TYPE(filestruct),DIMENSION(MAXFILES) :: files
+    TYPE(TFILE_ELT),DIMENSION(MAXFILES) :: TFILES
   END TYPE filelist_struct
 
 
@@ -1167,6 +1171,8 @@ END DO
   END SUBROUTINE UPDATE_VARID_IN
 
   SUBROUTINE OPEN_FILES(infiles,outfiles,hinfile,houtfile,nbvar_infile,options,runmode)
+    USE MODE_FM,               ONLY: IO_FILE_OPEN_ll, IO_FILE_CLOSE_ll
+    USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST
     TYPE(filelist_struct),INTENT(OUT) :: infiles, outfiles
     CHARACTER(LEN=*), INTENT(IN)  :: hinfile
     CHARACTER(LEN=*), INTENT(IN)  :: houtfile
@@ -1189,19 +1195,20 @@ END DO
        ! Cas LFI -> NetCDF
        infiles%nbfiles = infiles%nbfiles + 1
        idx = infiles%nbfiles
-       infiles%files(idx)%lun_id = 11
+       CALL IO_FILE_ADD2LIST(INFILES%TFILES(idx)%TFILE,HINFILE(1:LEN_TRIM(HINFILE)-4),'UNKNOWN','READ', &
+                             HFORMAT='LFI',KLFIVERB=0)
+       CALL IO_FILE_OPEN_ll(INFILES%TFILES(idx)%TFILE)
+       infiles%files(idx)%lun_id = INFILES%TFILES(idx)%TFILE%NLFIFLU
        infiles%files(idx)%format = LFI_FORMAT
        infiles%files(idx)%status = READING
        ilu = infiles%files(idx)%lun_id
-       CALL LFIOUV(iresp,ilu,ltrue,hinfile,'OLD',lfalse&
-            & ,lfalse,iverb,inap,inaf)
        infiles%files(idx)%opened  = .TRUE.
 
        nbvar_infile = inaf
 
        IF (options(OPTLIST)%set) THEN
           CALL LFILAF(iresp,ilu,lfalse)
-          CALL LFIFER(iresp,ilu,'KEEP')
+          CALL IO_FILE_CLOSE_ll(INFILES%TFILES(idx)%TFILE)
           return
        END IF
 
diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index 8134fb55b0c0e12e5ed69e752fa7ab4d0fddae45..0a2e51729ef8f3402b472ed756b8a62618956c24 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -53,7 +53,7 @@ END SUBROUTINE SET_FMPACK_ll
 
 SUBROUTINE IO_FILE_OPEN_ll(TPFILE,KRESP,OPARALLELIO,HPOSITION,HSTATUS)
 !
-USE MODD_CONF,  ONLY: NMNHVERSION
+USE MODD_CONF,  ONLY: CPROGRAM, NMNHVERSION
 USE MODD_IO_ll, ONLY: LIOCDF4,LLFIOUT,LLFIREAD,TFILEDATA
 USE MODE_FIELD, ONLY: TFIELDDATA,TYPEINT
 USE MODE_FMREAD
@@ -149,7 +149,7 @@ SELECT CASE(TPFILE%CTYPE)
 
   CASE DEFAULT
     !Do not open '.des' file if OUTPUT
-    IF(TPFILE%CTYPE/='OUTPUT') THEN
+    IF(TPFILE%CTYPE/='OUTPUT' .AND. CPROGRAM/='LFICDF') THEN
       CALL IO_FILE_ADD2LIST(TZFILE_DES,TRIM(TPFILE%CNAME)//'.des','DES',TPFILE%CMODE,TPDATAFILE=TPFILE,OOLD=.TRUE.) !OOLD=T because the file may already be in the list
       CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_FILE_OPEN_ll','OPEN_ll for '//TRIM(TPFILE%CNAME)//'.des')
       CALL OPEN_ll(TZFILE_DES,FORM='FORMATTED',DELIM='QUOTE',IOSTAT=IRESP,RECL=1024*8,OPARALLELIO=OPARALLELIO)
@@ -409,6 +409,7 @@ END SUBROUTINE FMOPEN_ll
   
 SUBROUTINE IO_FILE_CLOSE_ll(TPFILE,KRESP,OPARALLELIO)
 !
+USE MODD_CONF,  ONLY: CPROGRAM
 USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODE_IO_ll, ONLY : CLOSE_ll
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME
@@ -502,7 +503,7 @@ SELECT CASE(TPFILE%CTYPE)
 
   CASE DEFAULT
     !Do not close (non-existing) '.des' file if OUTPUT
-    IF(TPFILE%CTYPE/='OUTPUT') THEN
+    IF(TPFILE%CTYPE/='OUTPUT' .AND. CPROGRAM/='LFICDF') THEN
       CALL IO_FILE_FIND_BYNAME(TRIM(TPFILE%CNAME)//'.des',TZFILE_DES,IRESP)
       IF (IRESP/=0) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_FILE_CLOSE_ll','file '//TRIM(TPFILE%CNAME)//'.des not in filelist')
       !
@@ -551,6 +552,7 @@ SUBROUTINE FMCLOS_ll(TPFILE,HSTATU,KRESP,OPARALLELIO)
 !
 !!      J.Escobar   18/10/10   bug with PGI compiler on ADJUSTL
 !-------------------------------------------------------------------------------
+USE MODD_CONF,  ONLY : CPROGRAM
 USE MODD_IO_ll, ONLY : TFILEDATA
 USE MODE_IO_ll, ONLY : CLOSE_ll,UPCASE
 #if !defined(MNH_SGI)
@@ -624,7 +626,7 @@ IF (TPFILE%LMASTER) THEN
     IF (ASSOCIATED(TPFILE%TNCDIMS)) CALL CLEANIOCDF(TPFILE%TNCDIMS)
   END IF
 #endif
-  IF (IRESP == 0) THEN
+  IF (IRESP == 0 .AND. CPROGRAM/='LFICDF') THEN
     !! Write in pipe
 #if defined(MNH_LINUX) || defined(MNH_SP4)
     YTRANS='xtransfer.x'
diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90
index d7d27962efd4d863cae4ad093c1fc14b2ee5f3cb..6e1695126c2f41ecf4e146a4b88274af48ba3069 100644
--- a/src/LIB/SURCOUCHE/src/mode_io.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io.f90
@@ -930,7 +930,7 @@ ELSE
 !PW: TODO?: temporary to detect non-initialisation
 ! should disappear except at the beginning of a run
   GWRITE_OUTLST = .FALSE.
-  IF (GWRITE_STDOUT) WRITE(UNIT=OUTPUT_UNIT,FMT=*) 'TFILE_OUTPUTLISTING not associated'
+  IF (GWRITE_STDOUT .AND. CPROGRAM/='LFICDF') WRITE(UNIT=OUTPUT_UNIT,FMT=*) 'TFILE_OUTPUTLISTING not associated'
 END IF
 !
 SELECT CASE(HDOMAIN)