diff --git a/src/define_cloud.f90 b/src/define_cloud.f90
index b041a097ce9a3196314ccc0d3ee04b3f0b784fb5..90a17407ece9971fd3b1b8360f07d8042585a6e8 100644
--- a/src/define_cloud.f90
+++ b/src/define_cloud.f90
@@ -16,7 +16,7 @@
 !------------------------------------------------------------------------------|
 !------------------------------------------------------------------------------|
 
-subroutine define_cloud (cl,params,zisodisp)
+subroutine define_cloud (cl,params,zi)
 
 !------------------------------------------------------------------------------|
 !(((((((((((((((( Purpose of the routine  ))))))))))))))))))))))))))))))))))))))
@@ -38,7 +38,8 @@ implicit none
 
 type (cloud) cl
 type (parameters) params
-double precision zisodisp(2**params%levelmax_oct+1,2**params%levelmax_oct+1)
+type (ziso) zi
+!double precision zisodisp(2**params%levelmax_oct+1,2**params%levelmax_oct+1)
 
 !------------------------------------------------------------------------------|
 !(((((((((((((((( declaration of the subroutine internal variables )))))))))))))
@@ -70,7 +71,10 @@ if (params%irestart.eq.0) then
    allocate (cl%temp(1), stat=err) ; if (err.ne.0) call stop_run ('Error alloc cl%temp in define_cloud$')
    allocate (cl%press(1), stat=err) ; if (err.ne.0) call stop_run ('Error alloc cl%press in define_cloud$')
    allocate (cl%tag(1), stat=err) ; if (err.ne.0) call stop_run ('Error alloc cl%tag in define_cloud$')
-   if (params%isobc) zisodisp=0.d0
+   if (params%isobc) then
+     allocate (zi%zisodisp(2**params%levelmax_oct+1,2**params%levelmax_oct+1), stat=err); if (err.ne.0) call stop_run ('Error alloc zi%zisodisp in define_cloud$')
+     zi%zisodisp=0.d0
+   endif
 
 else
    open (19,file=trim(params%restartfile),status='old',form='unformatted')
@@ -93,6 +97,7 @@ else
    allocate (cl%temp(cl%np),stat=err) ; if (err.ne.0) call stop_run ('Error alloc cl%temp in define_cloud$')
    allocate (cl%press(cl%np),stat=err) ; if (err.ne.0) call stop_run ('Error alloc cl%press in define_cloud$')
    allocate (cl%tag(cl%np),stat=err) ; if (err.ne.0) call stop_run ('Error alloc cl%tag in define_cloud$')
+   if (params%isobc) allocate (zi%zisodisp(2**params%levelmax_oct+1,2**params%levelmax_oct+1), stat=err); if (err.ne.0) call stop_run ('Error alloc zi%zisodisp in define_cloud$')
 
    read (19) (x,               &
                 y,               &
@@ -146,7 +151,7 @@ else
                 i=1,cl%np)
 
    ! read isostasy basal displacement array - dwhipp 11/09
-   if (params%isobc) read (19) ((zisodisp(i,j),j=1,2**params%levelmax_oct+1),&
+   if (params%isobc) read (19) ((zi%zisodisp(i,j),j=1,2**params%levelmax_oct+1),&
                                i=1,2**params%levelmax_oct+1)
 
    close (19)