diff --git a/src/SURFEX/writesurf_oceann.F90 b/src/SURFEX/writesurf_oceann.F90
index bae5bc24540fe669c783a1d362aacd9e23e2238e..3a25b63465a78070c1926b2d63a07ddf1d7470ce 100644
--- a/src/SURFEX/writesurf_oceann.F90
+++ b/src/SURFEX/writesurf_oceann.F90
@@ -34,6 +34,7 @@
 !!      Original    03/2007
 !!      Modified    07/2012, P. Le Moigne : CMO1D phasing
 !!      11/2014 (David BARBARY) : Write oceanic level
+!!      10/2018 (Juan ESCOBAR) : change ZWORK,from automatic(error if O%XSEAT not initialized) to allocatable
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -75,7 +76,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
 !
 INTEGER :: JLEVEL ! loop counter on oceanic levels
 !
-REAL, DIMENSION(SIZE(O%XSEAT,1)) :: ZWORK ! 1D array to write data in file
+REAL, DIMENSION(:) , ALLOCATABLE :: ZWORK ! 1D array to write data in file
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 !-------------------------------------------------------------------------------
@@ -90,6 +91,8 @@ YCOMMENT='flag to use OCEAN model'
 IF (.NOT. O%LMERCATOR .AND. LHOOK) CALL DR_HOOK('WRITESURF_OCEAN_N',1,ZHOOK_HANDLE)
 IF (.NOT. O%LMERCATOR) RETURN
 !
+ALLOCATE(ZWORK(SIZE(O%XSEAT,1)))
+!
 ! Write Oceanic Level
 YRECFM='SEA_NBLEVEL'
 YCOMMENT='Number of OCEAN levels'
@@ -310,6 +313,9 @@ YRECFM='SEA_HMO'
 YCOMMENT='X_Y_'
  CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,O%XSEAHMO(:),IRESP,HCOMMENT=YCOMMENT)
 !-------------------------------------------------------------------------------
+!
+DEALLOCATE(ZWORK)
+!
 IF (LHOOK) CALL DR_HOOK('WRITESURF_OCEAN_N',1,ZHOOK_HANDLE)
 !
 END SUBROUTINE WRITESURF_OCEAN_n