diff --git a/src/LIB/NEWLFI/src/NEWLFI_ALL.f b/src/LIB/NEWLFI/src/NEWLFI_ALL.f
index 5354d04935a77b551d6af5aadad1df366377e6d9..8eb4553ae2295b40417791b906e9ad5a153a2bb0 100644
--- a/src/LIB/NEWLFI/src/NEWLFI_ALL.f
+++ b/src/LIB/NEWLFI/src/NEWLFI_ALL.f
@@ -6679,7 +6679,7 @@ C                                     NEES SUR LE FICHIER, INITIALEMENT.
 C                                     (ZERO SI CREATION)
       INTEGER JPNBST
 C
-      PARAMETER ( JPNBST=4 )
+      PARAMETER ( JPNBST=5 )
 C
       CHARACTER CPNOMD*(*)
       PARAMETER ( CPNOMD='%%%%% FICHIER SANS NOM %%%%%' )
@@ -6726,6 +6726,7 @@ C      DATA CLSTEX /'OLD', 'NEW', 'UNKNOWN', 'SCRATCH'/
       CLSTEX(2) = 'NEW' 
       CLSTEX(3) = 'UNKNOWN'
       CLSTEX(4) = 'SCRATCH'
+      CLSTEX(5) = 'REPLACE'
 C**
 C     1.  -  CONTROLES DIVERS, ET INITIALISATIONS.
 C-----------------------------------------------------------------------
diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index 2092da2a5805ba051add03a85471a228b25af49b..b95852bfa169d8e2f47eb693d4265804b9b7b0cf 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -239,6 +239,7 @@ INTEGER                 :: IFTYPE  ! type of FM-file
 INTEGER                 :: IROWF,IRESP
 CHARACTER(LEN=7)        :: YACTION ! Action upon the file ('READ' or 'WRITE')
 CHARACTER(LEN=:),ALLOCATABLE :: YFILEM  ! name of the file
+CHARACTER(LEN=:),ALLOCATABLE :: YFORSTATUS  ! Status for open of a file (for LFI) ('OLD','NEW','UNKNOWN','SCRATCH','REPLACE')
 CHARACTER(LEN=8)        :: YRESP
 LOGICAL                 :: GSTATS
 LOGICAL :: GNAMFI,GFATER,GNEWFI
@@ -361,15 +362,22 @@ IF (TPFILE%LMASTER) THEN
      GFATER8 = GFATER
      GSTATS8 = GSTATS
      !
-     CALL LFIOUV(IRESOU,     &
-          INUMBR8,           &
-          GNAMFI8,           &
-          TRIM(YFILEM)//'.lfi',  &
-          "UNKNOWN",         &
-          GFATER8,           &
-          GSTATS8,           &
-          IMELEV,            &
-          INPRAR,            &
+     SELECT CASE (YACTION)
+       CASE('READ')
+         YFORSTATUS = 'OLD'
+       CASE('WRITE')
+         YFORSTATUS = 'REPLACE'
+     END SELECT
+     !
+     CALL LFIOUV(IRESOU,        &
+          INUMBR8,              &
+          GNAMFI8,              &
+          TRIM(YFILEM)//'.lfi', &
+          YFORSTATUS,           &
+          GFATER8,              &
+          GSTATS8,              &
+          IMELEV,               &
+          INPRAR,               &
           ININAR)
      TPFILE%NLFININAR = ININAR
   IF (IRESOU /= 0 ) THEN
diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90
index 0490663dbd01d4619743c2e7c6adf3d03fa2341a..741cccab11c781cdcd277ea254985a546cf2e1da 100644
--- a/src/LIB/SURCOUCHE/src/mode_io.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io.f90
@@ -254,6 +254,7 @@ CONTAINS
 #endif
     CHARACTER(len=20)    :: YACTION
     CHARACTER(len=20)    :: YMODE
+    CHARACTER(LEN=256)   :: YIOERRMSG
     INTEGER              :: IOS,IERR,IRESP
     INTEGER(KIND=IDCDF_KIND) :: IOSCDF
     INTEGER              :: ICOMM
@@ -265,6 +266,7 @@ CONTAINS
     LOGICAL               :: GPARALLELIO
     TYPE(TFILEDATA),POINTER :: TZSPLITFILE
     CHARACTER(LEN=:),ALLOCATABLE :: YPREFILENAME !To store the directory + filename
+    CHARACTER(LEN=:),ALLOCATABLE :: YFORSTATUS  ! Status for open of a file (for LFI) ('OLD','NEW','UNKNOWN','SCRATCH','REPLACE')
 
     CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_ll','opening '//TRIM(TPFILE%CNAME)//' for '//TRIM(TPFILE%CMODE))
     !
@@ -404,6 +406,7 @@ CONTAINS
                STATUS=STATUS,          &
                ACCESS=ACCESS,          &
                IOSTAT=IOS,             &
+               IOMSG=YIOERRMSG,        &
                FORM=FORM,              &
                RECL=IRECSIZE,          &
                BLANK=BLANK,            &
@@ -421,6 +424,7 @@ CONTAINS
                   STATUS=YSTATUS,         &
                   ACCESS=YACCESS,         &
                   IOSTAT=IOS,             &
+                  IOMSG=YIOERRMSG,        &
                   FORM=YFORM,             &
                   ACTION=YACTION)
           ELSEIF (YACCESS=='DIRECT') THEN
@@ -429,6 +433,7 @@ CONTAINS
                   STATUS=YSTATUS,         &
                   ACCESS=YACCESS,         &
                   IOSTAT=IOS,             &
+                  IOMSG=YIOERRMSG,        &
                   FORM=YFORM,             &
                   RECL=YRECL,             &
                   ACTION=YACTION)
@@ -440,6 +445,7 @@ CONTAINS
                      STATUS=YSTATUS,         &
                      ACCESS=YACCESS,         &
                      IOSTAT=IOS,             &
+                     IOMSG=YIOERRMSG,        &
                      FORM=YFORM,             &
                      RECL=YRECL,             &
                      BLANK=YBLANK,           &
@@ -453,6 +459,7 @@ CONTAINS
                      STATUS=YSTATUS,         &
                      ACCESS=YACCESS,         &
                      IOSTAT=IOS,             &
+                     IOMSG=YIOERRMSG,        &
                      FORM=YFORM,             &
                      RECL=YRECL,             &
                      BLANK=YBLANK,           &
@@ -467,6 +474,7 @@ CONTAINS
                      STATUS=YSTATUS,         &
                      ACCESS=YACCESS,         &
                      IOSTAT=IOS,             &
+                     IOMSG=YIOERRMSG,        &
                      FORM=YFORM,             &
                      RECL=YRECL,             &
                      POSITION=YPOSITION,     &
@@ -494,6 +502,7 @@ CONTAINS
                STATUS=STATUS,          &
                ACCESS=ACCESS,          &
                IOSTAT=IOS,             &
+               IOMSG=YIOERRMSG,        &
                FORM=FORM,              &
                RECL=RECL,              &
                BLANK=BLANK,            &
@@ -504,7 +513,7 @@ CONTAINS
 #endif
 
 #endif
-
+          IF (IOS/=0) CALL PRINT_MSG(NVERB_FATAL,'IO','OPEN_ll','Problem when opening '//TRIM(YPREFILENAME)//': '//TRIM(YIOERRMSG))
        ELSE 
           !! NON I/O processors case
           IOS = 0
@@ -525,6 +534,7 @@ CONTAINS
             STATUS=STATUS,                         &
             ACCESS=ACCESS,                         &
             IOSTAT=IOS,                            &
+            IOMSG=YIOERRMSG,                       &
             FORM=FORM,                             &
             RECL=IRECSIZE,                         &
             BLANK=BLANK,                           &
@@ -541,6 +551,7 @@ CONTAINS
                STATUS=YSTATUS,                        &
                ACCESS=YACCESS,                        &
                IOSTAT=IOS,                            &
+               IOMSG=YIOERRMSG,                       &
                FORM=YFORM,                            &
                RECL=YRECL,                            &
                ACTION=YACTION)
@@ -551,6 +562,7 @@ CONTAINS
                STATUS=YSTATUS,                         &
                ACCESS=YACCESS,                         &
                IOSTAT=IOS,                             &
+               IOMSG=YIOERRMSG,                        &
                FORM=YFORM,                             &
                RECL=YRECL,                             &
                BLANK=YBLANK,                           &
@@ -564,6 +576,7 @@ CONTAINS
                STATUS=YSTATUS,                         &
                ACCESS=YACCESS,                         &
                IOSTAT=IOS,                             &
+               IOMSG=YIOERRMSG,                        &
                FORM=YFORM,                             &
                RECL=YRECL,                             &
                BLANK=YBLANK,                           &
@@ -579,6 +592,7 @@ CONTAINS
             STATUS=STATUS,                         &
             ACCESS=ACCESS,                         &
             IOSTAT=IOS,                            &
+            IOMSG=YIOERRMSG,                       &
             FORM=FORM,                             &
             RECL=RECL,                             &
             BLANK=BLANK,                           &
@@ -589,6 +603,7 @@ CONTAINS
 #endif
 
 #endif
+       IF (IOS/=0) CALL PRINT_MSG(NVERB_FATAL,'IO','OPEN_ll','Problem when opening '//TRIM(YPREFILENAME)//': '//TRIM(YIOERRMSG))
 
 
 
@@ -729,13 +744,20 @@ CONTAINS
                    ENDIF
                    INPRAR = 49
                    !
+                   SELECT CASE (YACTION)
+                     CASE('READ')
+                       YFORSTATUS = 'OLD'
+                     CASE('WRITE')
+                       YFORSTATUS = 'REPLACE'
+                   END SELECT
+                   !
                    ! JUAN open lfi file temporary modif
                    !
                    CALL LFIOUV(IRESOU,                   &
                         TZSPLITFILE%NLFIFLU,             &
                         GNAMFI8,                         &
                         TRIM(YPREFILENAME)//'.lfi',      &
-                        "UNKNOWN",                       &
+                        YFORSTATUS,                      &
                         GFATER8,                         &
                         GSTATS8,                         &
                         IMELEV,                          &