diff --git a/src/ZSOLVER/turb.f90 b/src/ZSOLVER/turb.f90
index c72f7d21d069a9b13a49a2e85337988ac7d0226d..51405a6cc6b570348f94020697fbc5a5da0a2e23 100644
--- a/src/ZSOLVER/turb.f90
+++ b/src/ZSOLVER/turb.f90
@@ -2216,6 +2216,7 @@ REAL                :: ZD           ! distance to the surface
 real, dimension(:,:,:), pointer , contiguous :: ztmp1_device, ztmp2_device
 #endif
 !
+LOGICAL :: GZD
 !-------------------------------------------------------------------------------
 JIU=SIZE(pdxx,1)
 JJU=SIZE(pdxx,2)
@@ -2332,24 +2333,25 @@ IF (.NOT. ORMC01) THEN
 !$acc kernels  
   DO JJ=1,JJU
     DO JI=1,JIU
+      GZD = .TRUE.
       IF (GOCEAN) THEN
         !$acc loop seq
         DO JK=KKTE,KKTB,-1
           ZD=ZALPHA*(PZZ(JI,JJ,KKTE+1)-PZZ(JI,JJ,JK))
-          IF ( PLM(JI,JJ,JK)>ZD) THEN
+          IF ( (PLM(JI,JJ,JK)>ZD) .AND. GZD ) THEN
             PLM(JI,JJ,JK)=ZD
           ELSE
-            EXIT
+            GZD = .FALSE.
           ENDIF
        END DO
       ELSE
         !$acc loop seq
         DO JK=KKTB,KKTE
           ZD = ZALPHA * ( 0.5 * ( PZZ(JI, JJ, JK) + PZZ(JI, JJ, JK+KKL) ) - PZZ(JI, JJ, KKB) ) * PDIRCOSZW(JI, JJ)
-          IF ( PLM(JI,JJ,JK) > ZD ) THEN
+          IF ( ( PLM(JI,JJ,JK) > ZD ) .AND. GZD ) THEN
             PLM(JI,JJ,JK) = ZD
           ELSE
-            EXIT
+            GZD = .FALSE.
           ENDIF
         END DO
       ENDIF   
@@ -2472,8 +2474,8 @@ REAL, DIMENSION(:,:,:), POINTER , CONTIGUOUS :: ZTMP1_DEVICE,ZTMP2_DEVICE
 #endif
 INTEGER  :: JIU,JJU,JKU
 LOGICAL :: GOCEAN !Intermediate variable used to work around a Cray compiler bug (CCE 13.0.0)
+LOGICAL :: GZD
 !----------------------------------------------------------------------------
-
 !$acc data present( PDXX, PDYY, PDZZ, PZZ, PDIRCOSZW, PTHLT, PTHVREF, PTKET, PSRCT, PRT, PLOCPEXNM, PATHETA, PAMOIST, PLM )
 
 if ( mppdb_initialized ) then
@@ -2683,14 +2685,15 @@ IF (.NOT. ORMC01) THEN
   !
   DO JJ=1,SIZE(PLM,2)
     DO JI=1,SIZE(PLM,1)
+      GZD = .TRUE.       
       IF (GOCEAN) THEN
         !$acc loop seq
         DO JK=KKTE,KKTB,-1
           ZD=ZALPHA*(PZZ(JI,JJ,KKTE+1)-PZZ(JI,JJ,JK))
-          IF ( PLM(JI,JJ,JK)>ZD) THEN
+          IF ( (PLM(JI,JJ,JK)>ZD) .AND. GZD ) THEN
             PLM(JI,JJ,JK)=ZD
           ELSE
-            EXIT
+            GZD = .FALSE.
           ENDIF
         END DO
       ELSE
@@ -2698,10 +2701,10 @@ IF (.NOT. ORMC01) THEN
         DO JK=KKTB,KKTE
           ZD=ZALPHA*(0.5*(PZZ(JI,JJ,JK)+PZZ(JI,JJ,JK+KKL))-PZZ(JI,JJ,KKB)) &
             *PDIRCOSZW(JI,JJ)
-          IF ( PLM(JI,JJ,JK)>ZD) THEN
+          IF ( (PLM(JI,JJ,JK)>ZD) .AND. GZD ) THEN
             PLM(JI,JJ,JK)=ZD
           ELSE
-            EXIT
+            GZD = .FALSE.
           ENDIF
         END DO
       ENDIF