diff --git a/src/OCE/SBC/sbcclo.F90 b/src/OCE/SBC/sbcclo.F90
index 44fe238211a5f0e8f33a44ba9bf3101e3badeae4..ba956f5e32dfa77dfea9106ee2855e2b2659d716 100644
--- a/src/OCE/SBC/sbcclo.F90
+++ b/src/OCE/SBC/sbcclo.F90
@@ -38,11 +38,11 @@ MODULE sbcclo
    PUBLIC sbc_clo
    PUBLIC sbc_clo_init
    !
-   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:) :: rsurfsrcg, rsurftrgg      !: closed sea source/target glo surface areas 
-   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:) :: rsurfsrcr, rsurftrgr      !: closed sea source/target rnf surface areas 
-   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:) :: rsurfsrce, rsurftrge      !: closed sea source/target emp surface areas 
+   REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:) :: rsurfsrcg, rsurftrgg      !: closed sea source/target glo surface areas 
+   REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:) :: rsurfsrcr, rsurftrgr      !: closed sea source/target rnf surface areas 
+   REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:) :: rsurfsrce, rsurftrge      !: closed sea source/target emp surface areas 
    !
-   INTEGER, PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:)  :: mcsgrpg, mcsgrpr, mcsgrpe !: closed sea group for glo, rnf and emp
+   INTEGER, SAVE, ALLOCATABLE, DIMENSION(:)  :: mcsgrpg, mcsgrpr, mcsgrpe !: closed sea group for glo, rnf and emp
    !
    CONTAINS
    !
@@ -301,19 +301,21 @@ MODULE sbcclo
             imsk_trg = kmsk_grp * kmsk_opnsea
          END IF
          !
-         !! 3. Subtract residuals from source points
-         zcsfwf = zcsfw / zsurfsrc
-         pwcs(:,:) = pwcs(:,:) -       zcsfwf              * imsk_src(:,:)
-         pqcs(:,:) = pqcs(:,:) + rcp * zcsfwf * sst_m(:,:) * imsk_src(:,:)
-         !
-         !! 4. Add residuals to target points 
-         !!    Do not use pqcs(:,:) = pqcs(:,:) - rcp * zcsfw  * sst_m(:,:) / zsurftrg 
-         !!    as there is no reason heat will be conserved with this formulation
-         zcsh   = glob_sum( 'closea', e1e2t(:,:) * rcp * zcsfwf * sst_m(:,:) * imsk_src(:,:) )
-         WHERE( imsk_trg(:,:) == kcsgrp(jcs) )
-            pwcs(:,:) = pwcs(:,:) + zcsfw / zsurftrg
-            pqcs(:,:) = pqcs(:,:) - zcsh  / zsurftrg
-         ENDWHERE
+         IF( zsurftrg > 0._wp ) THEN  ! target area /=0
+            !! 3. Subtract residuals from source points
+            zcsfwf = zcsfw / zsurfsrc
+            pwcs(:,:) = pwcs(:,:) -       zcsfwf              * imsk_src(:,:)
+            pqcs(:,:) = pqcs(:,:) + rcp * zcsfwf * sst_m(:,:) * imsk_src(:,:)
+            !
+            !! 4. Add residuals to target points 
+            !!    Do not use pqcs(:,:) = pqcs(:,:) - rcp * zcsfw  * sst_m(:,:) / zsurftrg 
+            !!    as there is no reason heat will be conserved with this formulation
+            zcsh   = glob_sum( 'closea', e1e2t(:,:) * rcp * zcsfwf * sst_m(:,:) * imsk_src(:,:) )
+            WHERE( imsk_trg(:,:) == kcsgrp(jcs) )
+               pwcs(:,:) = pwcs(:,:) + zcsfw / zsurftrg
+               pqcs(:,:) = pqcs(:,:) - zcsh  / zsurftrg
+            ENDWHERE
+         ENDIF
          !
       END DO ! jcs