diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90
index a8df4bfb74d3c9c32edea051462b3fd06950124f..6c05448accff11d50f7c584bb80a366dec7e01da 100644
--- a/src/LIB/SURCOUCHE/src/mode_io.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io.f90
@@ -666,8 +666,8 @@ CONTAINS
                       ELSE
                          IOS = 0
                       END IF
-                      CALL IO_SET_KNOWNDIMS_NC4(TPFILE)
-                      CALL IO_WRITE_COORDVAR_NC4(TPFILE)
+                      CALL IO_SET_KNOWNDIMS_NC4(TZSPLITFILE)
+                      CALL IO_WRITE_COORDVAR_NC4(TZSPLITFILE)
                    END IF
                 END IF
 #endif
diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
index d18b25ed305e3fe2121b9fe6f7954bac059598ea..cced7d932a59a87fe9bd81bc7df5c3f40fd772eb 100644
--- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90
+++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
@@ -637,16 +637,18 @@ GETSTRDIMID = TMP%ID
 
 END FUNCTION GETSTRDIMID
 
-SUBROUTINE FILLVDIMS(TPFILE, TPFIELD, KSHAPE, KVDIMS)
+SUBROUTINE FILLVDIMS(TPFILE, TPFIELD, KSHAPE, KVDIMS, OSPLIT)
 TYPE(TFILEDATA),                      INTENT(IN)  :: TPFILE
 TYPE(TFIELDDATA),                     INTENT(IN)  :: TPFIELD
 INTEGER(KIND=IDCDF_KIND),DIMENSION(:),INTENT(IN)  :: KSHAPE
 INTEGER(KIND=IDCDF_KIND),DIMENSION(:),INTENT(OUT) :: KVDIMS
+LOGICAL, OPTIONAL,                    INTENT(IN)  :: OSPLIT
 !
 INTEGER               :: IGRID
 INTEGER               :: JI
 CHARACTER(LEN=32)     :: YINT
 CHARACTER(LEN=2)      :: YDIR
+LOGICAL               :: GSPLIT
 TYPE(DIMCDF), POINTER :: PTDIM
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','FILLVDIMS','called for '//TRIM(TPFIELD%CMNHNAME))
@@ -656,9 +658,21 @@ IF (SIZE(KSHAPE) < 1) CALL PRINT_MSG(NVERB_FATAL,'IO','FILLVDIMS','empty KSHAPE'
 IGRID  =  TPFIELD%NGRID
 YDIR   =  TPFIELD%CDIR
 !
-IF(SIZE(KSHAPE)/=TPFIELD%NDIMS) THEN
-  WRITE(YINT,'( I0,"/",I0 )') SIZE(KSHAPE),TPFIELD%NDIMS
-  CALL PRINT_MSG(NVERB_FATAL,'IO','FILLVDIMS','SIZE(KSHAPE)/=TPFIELD%NDIMS ('//TRIM(YINT)//') for field '//TRIM(TPFIELD%CMNHNAME))
+GSPLIT = .FALSE.
+IF (PRESENT(OSPLIT)) GSPLIT = OSPLIT
+!
+IF (GSPLIT) THEN
+  IF(SIZE(KSHAPE)/=(TPFIELD%NDIMS-1)) THEN
+    WRITE(YINT,'( I0,"/",I0 )') SIZE(KSHAPE),TPFIELD%NDIMS-1
+    CALL PRINT_MSG(NVERB_FATAL,'IO','FILLVDIMS','SIZE(KSHAPE)/=TPFIELD%NDIMS-1 ('//TRIM(YINT)//') for field ' &
+                   //TRIM(TPFIELD%CMNHNAME))
+  END IF
+ELSE
+  IF(SIZE(KSHAPE)/=TPFIELD%NDIMS) THEN
+    WRITE(YINT,'( I0,"/",I0 )') SIZE(KSHAPE),TPFIELD%NDIMS
+    CALL PRINT_MSG(NVERB_FATAL,'IO','FILLVDIMS','SIZE(KSHAPE)/=TPFIELD%NDIMS ('//TRIM(YINT)//') for field ' &
+                   //TRIM(TPFIELD%CMNHNAME))
+  END IF
 END IF
 !
 IF(IGRID<0 .OR. IGRID>4) THEN
@@ -670,7 +684,7 @@ IF(IGRID==0 .AND. YDIR/='--' .AND. YDIR/=''  ) THEN
   CALL PRINT_MSG(NVERB_FATAL,'IO','FILLVDIMS','invalid YDIR ('//TRIM(YDIR)//') with NGRID=0 for field '//TRIM(TPFIELD%CMNHNAME))
 END IF
 !
-DO JI=1,TPFIELD%NDIMS
+DO JI=1,SIZE(KSHAPE)
   IF (JI == 1) THEN
     IF ( (YDIR == 'XX' .OR. YDIR == 'XY') .AND. KSHAPE(1)==NCOORDID(1,IGRID)%LEN) THEN
       KVDIMS(1) = NCOORDID(1,IGRID)%ID
@@ -816,9 +830,11 @@ CHARACTER(LEN=LEN(TPFIELD%CMNHNAME)+4) :: YTMP,YVARNAME
 INTEGER(KIND=IDCDF_KIND) :: IVARID
 INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
 INTEGER                  :: IRESP
+LOGICAL                  :: GSPLIT
 TYPE(TFILEDATA),POINTER  :: TZFILE
 !
 IRESP = 0
+GSPLIT = .FALSE.
 !
 IF (PRESENT(KVERTLEVEL)) THEN
   WRITE(YSUFFIX,'(I4.4)') KVERTLEVEL
@@ -829,6 +845,7 @@ IF (PRESENT(KVERTLEVEL)) THEN
   YTMP = TRIM(TPFIELD%CMNHNAME)//YSUFFIX
   IF (KZFILE>TPFILE%NSUBFILES_IOZ) CALL PRINT_MSG(NVERB_FATAL,'IO','IO_WRITE_FIELD_NC4_X2','KZFILE value too high')
   TZFILE => TPFILE%TFILES_IOZ(KZFILE)%TFILE
+  GSPLIT = .TRUE.
 ELSE
   YTMP = TRIM(TPFIELD%CMNHNAME)
   TZFILE => TPFILE
@@ -851,7 +868,7 @@ IF (STATUS /= NF90_NOERR) THEN
    END IF
 
    ! Get the netcdf dimensions
-   CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), IVDIMS)
+   CALL FILLVDIMS(TPFILE, TPFIELD, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), IVDIMS, GSPLIT)
 
    ! Define the variable 
    IF (TZFILE%LNCREDUCE_FLOAT_PRECISION) THEN