Index: branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/fldread.F90
===================================================================
--- branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/fldread.F90	(revision 1953)
+++ branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/fldread.F90	(revision 1970)
@@ -186,5 +186,5 @@
                         &                    nday   + 1                   - nmonth_len(nmonth) * COUNT((/llnxtmth/)), llstop )
 
-                     IF( sd(jf)%num == 0 .AND. .NOT. llstop ) THEN    ! next year file does not exist
+                     IF( sd(jf)%num <= 0 .AND. .NOT. llstop ) THEN    ! next year file does not exist
                         CALL ctl_warn('next year/month/day file: '//TRIM(sd(jf)%clname)//     &
                                 &     ' not present -> back to current year/month/day')
Index: branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/geo2ocean.F90
===================================================================
--- branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/geo2ocean.F90	(revision 1953)
+++ branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/geo2ocean.F90	(revision 1970)
@@ -311,8 +311,8 @@
 
       ! lateral boundary cond.: T-, U-, V-, F-pts, sgn
-      CALL lbc_lnk( gcost, 'T', 1. )   ;   CALL lbc_lnk( gsint, 'T', -1. )
-      CALL lbc_lnk( gcosu, 'U', 1. )   ;   CALL lbc_lnk( gsinu, 'U', -1. )
-      CALL lbc_lnk( gcosv, 'V', 1. )   ;   CALL lbc_lnk( gsinv, 'V', -1. )
-      CALL lbc_lnk( gcosf, 'F', 1. )   ;   CALL lbc_lnk( gsinf, 'F', -1. )
+      CALL lbc_lnk( gcost, 'T', -1. )   ;   CALL lbc_lnk( gsint, 'T', -1. )
+      CALL lbc_lnk( gcosu, 'U', -1. )   ;   CALL lbc_lnk( gsinu, 'U', -1. )
+      CALL lbc_lnk( gcosv, 'V', -1. )   ;   CALL lbc_lnk( gsinv, 'V', -1. )
+      CALL lbc_lnk( gcosf, 'F', -1. )   ;   CALL lbc_lnk( gsinf, 'F', -1. )
 
    END SUBROUTINE angle
Index: branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/sbccpl.F90
===================================================================
--- branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/sbccpl.F90	(revision 1953)
+++ branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/sbccpl.F90	(revision 1970)
@@ -23,4 +23,5 @@
    USE sbc_oce         ! Surface boundary condition: ocean fields
    USE sbc_ice         ! Surface boundary condition: ice fields
+   USE phycst          ! physical constants
 #if defined key_lim3
    USE par_ice         ! ice parameters
@@ -45,5 +46,4 @@
    USE lib_mpp         ! distribued memory computing library
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
-   USE phycst, ONLY : xlsn, rhosn, xlic, rhoic
 #if defined key_cpl_carbon_cycle
    USE p4zflx, ONLY : oce_co2
@@ -274,5 +274,6 @@
       srcv(jpr_itz2)%clname = 'O_ITauz2'      ! 3rd   -      -         -     - 
       ! 
-      srcv(jpr_otx1:jpr_itz2)%nsgn = -1                           ! Vectors: change of sign at north fold
+      ! Vectors: change of sign at north fold ONLY if on the local grid
+      IF( TRIM( cn_rcv_tau(3) ) == 'local grid' )   srcv(jpr_otx1:jpr_itz2)%nsgn = -1.
       
       !                                                           ! Set grid and action
@@ -714,7 +715,6 @@
          IF( srcv(jpr_qnsoce)%laction )   qns(:,:) = frcv(:,:,jpr_qnsoce)
          IF( srcv(jpr_qnsmix)%laction )   qns(:,:) = frcv(:,:,jpr_qnsmix)        
-         !   energy for melting solid precipitation over free ocean
-         zcoef = xlsn / rhosn
-         qns(:,:) = qns(:,:) - frcv(:,:,jpr_snow) * zcoef
+         qns(:,:) = qns(:,:) - frcv(:,:,jpr_snow) * lfus              ! add the latent heat of solid precip. melting 
+
          !                                                       ! solar flux over the ocean          (qsr)
          IF( srcv(jpr_qsroce)%laction )   qsr(:,:) = frcv(:,:,jpr_qsroce) 
@@ -1117,9 +1117,6 @@
             &                                                   +          pist(:,:,1)   * zicefr(:,:,1) ) )
       END SELECT
-      !                                                           ! snow melting heat flux ....
-      !   energy for melting solid precipitation over ice-free ocean
-      zcoef = xlsn / rhosn
-      ztmp(:,:) = p_frld(:,:,1) * zsnow(:,:) * zcoef
-      pqns_tot(:,:) = pqns_tot(:,:) - ztmp(:,:)
+      ztmp(:,:) = p_frld(:,:,1) * zsnow(:,:) * lfus               ! add the latent heat of solid precip. melting
+      pqns_tot(:,:) = pqns_tot(:,:) - ztmp(:,:)                   ! over free ocean 
       IF( lk_diaar5 )   CALL iom_put( 'hflx_snow_cea', ztmp + zsnow(:,:) * zcptn(:,:) )   ! heat flux from snow (cell average)
 !!gm
@@ -1130,9 +1127,7 @@
 !!
 !! similar job should be done for snow and precipitation temperature
-      !                                                           ! Iceberg melting heat flux ....
-      !   energy for iceberg melting 
-      IF( srcv(jpr_cal)%laction ) THEN 
-         zcoef = xlic / rhoic
-         ztmp(:,:) = frcv(:,:,jpr_cal) * zcoef
+      !                                     
+      IF( srcv(jpr_cal)%laction ) THEN                            ! Iceberg melting 
+         ztmp(:,:) = frcv(:,:,jpr_cal) * lfus                     ! add the latent heat of iceberg melting 
          pqns_tot(:,:) = pqns_tot(:,:) - ztmp(:,:)
          IF( lk_diaar5 )   CALL iom_put( 'hflx_cal_cea', ztmp + frcv(:,:,jpr_cal) * zcptn(:,:) )   ! heat flux from calving
Index: branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/sbcfwb.F90
===================================================================
--- branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/sbcfwb.F90	(revision 1953)
+++ branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SBC/sbcfwb.F90	(revision 1970)
@@ -65,5 +65,5 @@
       INTEGER  ::   inum                  ! temporary logical unit
       INTEGER  ::   ikty, iyear           ! 
-      REAL(wp) ::   z_emp, z_emp_nsrf       ! temporary scalars
+      REAL(wp) ::   z_emp, z_emp_nsrf, zsum_emp, zsum_erp       ! temporary scalars
       REAL(wp) ::   zsurf_neg, zsurf_pos, zsurf_tospread
       REAL(wp), DIMENSION(jpi,jpj) ::   ztmsk_neg, ztmsk_pos, ztmsk_tospread
@@ -165,4 +165,6 @@
             !
             IF( lk_mpp )   CALL  mpp_sum( z_emp )
+            IF( lk_mpp )   CALL  mpp_sum( zsurf_neg )
+            IF( lk_mpp )   CALL  mpp_sum( zsurf_pos )
             
             IF( z_emp < 0.e0 ) THEN
@@ -177,7 +179,12 @@
 
             ! emp global mean over <0 or >0 erp area
-            z_emp_nsrf = SUM( e1e2_i(:,:) * z_emp ) / ( zsurf_tospread + rsmall )
+            zsum_emp = SUM( e1e2_i(:,:) * z_emp )
+            IF( lk_mpp )   CALL  mpp_sum( zsum_emp )
+            z_emp_nsrf =  zsum_emp / ( zsurf_tospread + rsmall )
             ! weight to respect erp field 2D structure 
-            z_wgt(:,:) = ztmsk_tospread(:,:) * erp(:,:) / ( SUM( ztmsk_tospread(:,:) * erp(:,:) * e1e2_i(:,:) ) + rsmall )
+            zsum_erp = SUM( ztmsk_tospread(:,:) * erp(:,:) * e1e2_i(:,:) )
+            IF( lk_mpp )   CALL  mpp_sum( zsum_erp )
+            z_wgt(:,:) = ztmsk_tospread(:,:) * erp(:,:) / ( zsum_erp + rsmall )
+
             ! final correction term to apply
             zerp_cor(:,:) = -1. * z_emp_nsrf * zsurf_tospread * z_wgt(:,:)
