diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
index 238b603567a3d855ed2a043d74ca74fc28f45dfa..ec999a10b96ea86a8a5daa4b24cd1419bdbd3ffd 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
@@ -194,7 +194,7 @@ end if
 
 end subroutine IO_Field_header_split_write_nc4
 
-SUBROUTINE IO_Field_attr_write_nc4( TPFILE, TPFIELD, KVARID, OEXISTED, KSHAPE, HCALENDAR, OISCOORD, KBOXID )
+SUBROUTINE IO_Field_attr_write_nc4( TPFILE, TPFIELD, KVARID, OEXISTED, KSHAPE, HCALENDAR, OISCOORD, KBOXID, KVERTLEVEL )
 !
 USE MODD_CONF,   ONLY: CPROGRAM, LCARTESIAN
 USE MODD_CONF_n, ONLY: CSTORAGE_TYPE
@@ -208,6 +208,7 @@ INTEGER(KIND=CDFINT), DIMENSION(:), OPTIONAL, INTENT(IN) :: KSHAPE
 CHARACTER(LEN=*),                   OPTIONAL, INTENT(IN) :: HCALENDAR
 LOGICAL,                            OPTIONAL, INTENT(IN) :: OISCOORD   ! Is a coordinate variable (->do not write coordinates attribute)
 INTEGER,                            OPTIONAL, INTENT(IN) :: KBOXID
+INTEGER,                            OPTIONAL, INTENT(IN) :: KVERTLEVEL ! Vertical level
 !
 CHARACTER(LEN=:),                   ALLOCATABLE :: YCOORDS
 INTEGER(KIND=CDFINT)                            :: INCID
@@ -278,6 +279,13 @@ ELSE IF (TPFIELD%NGRID>0) THEN
                                                    //trim(TPFIELD%CMNHNAME))
 ENDIF
 !
+IF ( PRESENT( KVERTLEVEL ) ) THEN
+  ! LEVEL attribute definition
+  istatus = NF90_PUT_ATT( INCID, KVARID, 'level', KVERTLEVEL )
+  IF ( istatus /= NF90_NOERR ) CALL IO_Err_handle_nc4( istatus, 'IO_Field_attr_write_nc4', 'NF90_PUT_ATT', 'level for ' &
+                                                       // trim(TPFIELD%CMNHNAME) )
+END IF
+!
 ! COMMENT attribute definition
 IF(LEN_TRIM(TPFIELD%CCOMMENT)==0) THEN
   CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_attr_write_nc4','TPFIELD%CCOMMENT not set for variable '//TRIM(TPFIELD%CMNHNAME))
@@ -417,7 +425,7 @@ ENDIF
 END SUBROUTINE IO_Field_attr_write_nc4
 
 
-subroutine IO_Field_create_nc4( tpfile, tpfield, kshape, hcalendar, oiscoord, kboxid, kvarid, oisempty )
+subroutine IO_Field_create_nc4( tpfile, tpfield, kshape, hcalendar, oiscoord, kboxid, kvertlevel, kvarid, oisempty )
 
 use modd_field,     only: NMNHDIM_TIME, TYPECHAR, TYPEDATE, TYPEINT, TYPELOG, TYPEREAL, TYPEUNDEF
 use modd_precision, only: MNHINT_NF90, MNHREAL_NF90
@@ -428,6 +436,7 @@ integer, dimension(:), intent(in),  optional :: kshape
 character(len=*),      intent(in),  optional :: hcalendar
 logical,               intent(in),  optional :: oiscoord   ! Is a coordinate variable (->do not write coordinates attribute)
 integer,               intent(in),  optional :: kboxid
+integer,               intent(in),  optional :: kvertlevel
 integer(kind=CDFINT),  intent(out), optional :: kvarid
 logical,               intent(out), optional :: oisempty
 
@@ -578,7 +587,7 @@ end if
 
 ! Write metadata
 call IO_Field_attr_write_nc4( tpfile, tpfield, ivarid, gexisted, kshape = ishape, hcalendar = hcalendar, &
-                              oiscoord = oiscoord, kboxid = kboxid )
+                              oiscoord = oiscoord, kboxid = kboxid, kvertlevel = kvertlevel )
 
 if ( Present( kvarid ) ) kvarid = ivarid
 
@@ -660,7 +669,7 @@ call IO_Select_split_file( tpfile, tpfield, tzfile, tzfield, kvertlevel, kzfile
 CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_Field_write_nc4_X2',TRIM(TZFILE%CNAME)//': writing '//TRIM(TZFIELD%CMNHNAME))
 !
 call IO_Field_create_nc4( tzfile, tzfield, kshape = Shape( pfield ), oiscoord = oiscoord, kboxid = kboxid, &
-                          kvarid = ivarid, oisempty = gisempty )
+                          kvertlevel = kvertlevel, kvarid = ivarid, oisempty = gisempty )
 
 ! Write the data
 if ( .not. gisempty ) then