diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index d37ce4b88d39e584d77ee3d35c54788fd81851c8..2a7d97bd0dea403d82a635b222a5e6d2f841aeb8 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -609,7 +609,16 @@ IF (TPFILE%LMASTER) THEN
      CALL LFIFER(IRESP8,TPFILE%NLFIFLU,YSTATU)
      IRESP = IRESP8
   END IF
-  IF (ASSOCIATED(TPFILE%TNCDIMS)) CALL CLEANIOCDF(TPFILE%TNCDIMS)
+#if defined(MNH_IOCDF4)
+  IF (TPFILE%NNCID/=-1) THEN
+    ! Close Netcdf File
+    IRESP = NF90_CLOSE(TPFILE%NNCID)
+    IF (IRESP /= NF90_NOERR) THEN
+      CALL PRINT_MSG(NVERB_WARNING,'IO','FMCLOS_ll','NF90_CLOSE error: '//TRIM(NF90_STRERROR(IRESP)))
+    END IF
+    IF (ASSOCIATED(TPFILE%TNCDIMS)) CALL CLEANIOCDF(TPFILE%TNCDIMS)
+  END IF
+#endif
   IF (IRESP == 0) THEN
     !! Write in pipe
 #if defined(MNH_LINUX) || defined(MNH_SP4)
diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90
index 9cb6bee5a6d08bc2e4080d141642e562413323a5..8c2d65a50bde08bd1ef53d676c49e1fb0d2de77c 100644
--- a/src/LIB/SURCOUCHE/src/mode_io.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io.f90
@@ -786,7 +786,16 @@ CONTAINS
             CALL IOFREEFLU(INT(TPFILE%NLFIFLU))
             IRESP2 = IRESP8
           END IF
-          IF (ASSOCIATED(TZFILE%TNCDIMS)) CALL CLEANIOCDF(TZFILE%TNCDIMS)
+#if defined(MNH_IOCDF4)
+          IF (TZFILE%NNCID/=-1) THEN
+            ! Close Netcdf File
+            IRESP = NF90_CLOSE(TZFILE%NNCID)
+            IF (IRESP /= NF90_NOERR) THEN
+              CALL PRINT_MSG(NVERB_WARNING,'IO','CLOSE_ll','NF90_CLOSE error: '//TRIM(NF90_STRERROR(IRESP)))
+            END IF
+            IF (ASSOCIATED(TZFILE%TNCDIMS)) CALL CLEANIOCDF(TZFILE%TNCDIMS)
+          END IF
+#endif
         END IF
       END DO
       !
diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
index 86805e939275378dfe80a3b2e550bcd45d6455c8..61b4ce68b6d76b6a268ff02cca88a0d209420d17 100644
--- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90
+++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
@@ -47,7 +47,7 @@ INTERFACE IO_READ_FIELD_NC4
 END INTERFACE IO_READ_FIELD_NC4
 
 ! Public from module netcdf
-PUBLIC NF90_OPEN,NF90_CREATE,NF90_NOWRITE,NF90_CLOBBER,NF90_NETCDF4,NF90_NOERR,NF90_STRERROR
+PUBLIC NF90_CLOSE,NF90_OPEN,NF90_CREATE,NF90_NOWRITE,NF90_CLOBBER,NF90_NETCDF4,NF90_NOERR,NF90_STRERROR
 ! Public from this module :
 PUBLIC NEWIOCDF,CLEANIOCDF,IO_WRITE_FIELD_NC4,IO_READ_FIELD_NC4,IO_WRITE_HEADER_NC4
 
@@ -92,12 +92,6 @@ INTEGER(KIND=IDCDF_KIND) :: IRESP
 
 CALL PRINT_MSG(NVERB_DEBUG,'IO','CLEANIOCDF','called')
 
-! Close Netcdf File
-IRESP = NF90_CLOSE(PIOCDF%NCID)
-IF (IRESP /= NF90_NOERR) THEN
-  CALL PRINT_MSG(NVERB_WARNING,'IO','CLEANIOCDF','NF90_CLOSE error: '//TRIM(NF90_STRERROR(IRESP)))
-END IF
-
 ! Clean DIMLIST and DIMSTR
 CALL CLEANLIST(PIOCDF%DIMLIST)
 CALL CLEANLIST(PIOCDF%DIMSTR)