Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldfc1d_c2d.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldfc1d_c2d.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldfc1d_c2d.F90	(revision 9094)
@@ -101,6 +101,6 @@
             END DO
          END DO
-         CALL lbc_lnk( pah1, 'U', 1. )   ! Lateral boundary conditions
-         CALL lbc_lnk( pah2, 'V', 1. )   
+         ! Lateral boundary conditions
+         CALL lbc_lnk_multi( pah1, 'U', 1. , pah2, 'V', 1. )   
          !
       END SELECT
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90	(revision 9094)
@@ -321,5 +321,5 @@
          ENDIF
          !
-         CALL lbc_lnk( ahmt, 'T', 1. )   ;   CALL lbc_lnk( ahmf, 'F', 1. )
+         CALL lbc_lnk_multi( ahmt, 'T', 1.,  ahmf, 'F', 1. )
          !
          !
@@ -403,5 +403,5 @@
          ENDIF
          !
-         CALL lbc_lnk( ahmt, 'T', 1. )   ;   CALL lbc_lnk( ahmf, 'F', 1. )
+         CALL lbc_lnk_multi( ahmt, 'T', 1. , ahmf, 'F', 1. )
          !
       END SELECT
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90	(revision 9094)
@@ -231,5 +231,5 @@
          END DO
       END DO
-      CALL lbc_lnk( zwz, 'U', -1. )   ;   CALL lbc_lnk( zww, 'V', -1. )      ! lateral boundary conditions
+      CALL lbc_lnk_multi( zwz, 'U', -1.,  zww, 'V', -1. )      ! lateral boundary conditions
       !
       !                                            !* horizontal Shapiro filter
@@ -313,5 +313,5 @@
          END DO
       END DO
-      CALL lbc_lnk( zwz, 'T', -1. )   ;    CALL lbc_lnk( zww, 'T', -1. )      ! lateral boundary conditions
+      CALL lbc_lnk_multi( zwz, 'T', -1.,  zww, 'T', -1. )      ! lateral boundary conditions
       !
       !                                           !* horizontal Shapiro filter
@@ -362,6 +362,5 @@
       ! IV. Lateral boundary conditions
       ! ===============================
-      CALL lbc_lnk( uslp , 'U', -1. )      ;      CALL lbc_lnk( vslp , 'V', -1. )
-      CALL lbc_lnk( wslpi, 'W', -1. )      ;      CALL lbc_lnk( wslpj, 'W', -1. )
+      CALL lbc_lnk_multi( uslp , 'U', -1. , vslp , 'V', -1. , wslpi, 'W', -1., wslpj, 'W', -1. )
 
       IF(ln_ctl) THEN
@@ -726,6 +725,5 @@
       END DO
       !!gm this lbc_lnk should be useless....
-      CALL lbc_lnk( uslpml , 'U', -1. )   ;   CALL lbc_lnk( vslpml , 'V', -1. )   ! lateral boundary cond. (sign change)
-      CALL lbc_lnk( wslpiml, 'W', -1. )   ;   CALL lbc_lnk( wslpjml, 'W', -1. )   ! lateral boundary conditions
+      CALL lbc_lnk_multi( uslpml , 'U', -1. , vslpml , 'V', -1. , wslpiml, 'W', -1. , wslpjml, 'W', -1. ) 
       !
       IF( ln_timing )   CALL timing_stop('ldf_slp_mxl')
@@ -799,6 +797,5 @@
 !               END DO
 !            END DO
-!            CALL lbc_lnk( uslp , 'U', -1. )   ;   CALL lbc_lnk( vslp , 'V', -1. )      ! Lateral boundary conditions
-!            CALL lbc_lnk( wslpi, 'W', -1. )   ;   CALL lbc_lnk( wslpj, 'W', -1. )
+!            CALL lbc_lnk_multi( uslp , 'U', -1. ; CALL lbc_lnk( vslp , 'V', -1.,  wslpi, 'W', -1.,  wslpj, 'W', -1. )
 !!gm         ENDIF
       ENDIF
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90	(revision 9094)
@@ -564,5 +564,5 @@
          END DO 
       END DO 
-      CALL lbc_lnk( paeiu(:,:,1), 'U', 1. )   ;   CALL lbc_lnk( paeiv(:,:,1), 'V', 1. )      ! lateral boundary condition
+      CALL lbc_lnk_multi( paeiu(:,:,1), 'U', 1. , paeiv(:,:,1), 'V', 1. )      ! lateral boundary condition
 
       DO jk = 2, jpkm1                          !==  deeper values equal the surface one  ==!
@@ -678,6 +678,5 @@
       !
       !                                                  !==  eiv stream function: output  ==!
-      CALL lbc_lnk( psi_uw, 'U', -1. )                         ! lateral boundary condition
-      CALL lbc_lnk( psi_vw, 'V', -1. )
+      CALL lbc_lnk_multi( psi_uw, 'U', -1. , psi_vw, 'V', -1. )
       !
 !!gm      CALL iom_put( "psi_eiv_uw", psi_uw )                 ! output
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90	(revision 9094)
@@ -755,7 +755,6 @@
             END DO
          END DO
-         !
-         CALL lbc_lnk( pab(:,:,jp_tem), 'T', 1. )                    ! Lateral boundary conditions
-         CALL lbc_lnk( pab(:,:,jp_sal), 'T', 1. )                    
+         !                            ! Lateral boundary conditions
+         CALL lbc_lnk_multi( pab(:,:,jp_tem), 'T', 1. , pab(:,:,jp_sal), 'T', 1. )                    
          !
       CASE( np_seos )                  !==  simplified EOS  ==!
@@ -776,7 +775,6 @@
             END DO
          END DO
-         !
-         CALL lbc_lnk( pab(:,:,jp_tem), 'T', 1. )                    ! Lateral boundary conditions
-         CALL lbc_lnk( pab(:,:,jp_sal), 'T', 1. )                    
+         !                            ! Lateral boundary conditions
+         CALL lbc_lnk_multi( pab(:,:,jp_tem), 'T', 1. , pab(:,:,jp_sal), 'T', 1. )                    
          !
       CASE DEFAULT
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen.F90	(revision 9094)
@@ -126,5 +126,5 @@
                END DO
             END DO
-            CALL lbc_lnk( ztu, 'U', -1. )   ;    CALL lbc_lnk( ztv, 'V', -1. )   ! Lateral boundary cond.
+            CALL lbc_lnk_multi( ztu, 'U', -1. , ztv, 'V', -1. )   ! Lateral boundary cond.
             !
             DO jk = 1, jpkm1                       ! Horizontal advective fluxes
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90	(revision 9094)
@@ -211,5 +211,5 @@
                END DO
             END DO
-            CALL lbc_lnk( zltu, 'T', 1. )   ;    CALL lbc_lnk( zltv, 'T', 1. )   ! Lateral boundary cond. (unchanged sgn)
+            CALL lbc_lnk_multi( zltu, 'T', 1. , zltv, 'T', 1. )   ! Lateral boundary cond. (unchanged sgn)
             !
             DO jk = 1, jpkm1                 ! Horizontal advective fluxes
@@ -236,5 +236,5 @@
                END DO
             END DO
-            CALL lbc_lnk( ztu, 'U', -1. )   ;    CALL lbc_lnk( ztv, 'V', -1. )   ! Lateral boundary cond. (unchanged sgn)
+            CALL lbc_lnk_multi( ztu, 'U', -1. , ztv, 'V', -1. )   ! Lateral boundary cond. (unchanged sgn)
             !
             DO jk = 1, jpkm1                 ! Horizontal advective fluxes
@@ -282,6 +282,5 @@
          ENDIF
          !
-         CALL lbc_lnk( zwx, 'U', -1. )   ;   CALL lbc_lnk( zwy, 'V', -1. )         ! Lateral bondary conditions
-         CALL lbc_lnk( zwz, 'W',  1. )
+         CALL lbc_lnk_multi( zwx, 'U', -1. , zwy, 'V', -1.,  zwz, 'W',  1. )
          !
          !        !==  monotonicity algorithm  ==!
@@ -402,5 +401,5 @@
          END DO
       END DO
-      CALL lbc_lnk( zbetup, 'T', 1. )   ;   CALL lbc_lnk( zbetdo, 'T', 1. )   ! lateral boundary cond. (unchanged sign)
+      CALL lbc_lnk_multi( zbetup, 'T', 1. , zbetdo, 'T', 1. )   ! lateral boundary cond. (unchanged sign)
 
       ! 3. monotonic flux in the i & j direction (paa & pbb)
@@ -428,5 +427,5 @@
          END DO
       END DO
-      CALL lbc_lnk( paa, 'U', -1. )   ;   CALL lbc_lnk( pbb, 'V', -1. )   ! lateral boundary condition (changed sign)
+      CALL lbc_lnk_multi( paa, 'U', -1. , pbb, 'V', -1. )   ! lateral boundary condition (changed sign)
       !
       IF( ln_timing )   CALL timing_stop('nonosc')
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90	(revision 9094)
@@ -324,5 +324,5 @@
                END DO
             END DO
-            CALL lbc_lnk( rfu, 'U', 1. )   ;   CALL lbc_lnk( rfv, 'V', 1. )
+            CALL lbc_lnk_multi( rfu, 'U', 1. , rfv, 'V', 1. )
             !
          ELSEIF( nn_mle == 1 ) THEN           ! MLE array allocation & initialisation
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90	(revision 9094)
@@ -142,6 +142,6 @@
            END DO
          END DO
-         CALL lbc_lnk( zwx, 'U', -1. )          ! lateral boundary conditions   (changed sign)
-         CALL lbc_lnk( zwy, 'V', -1. )
+         ! lateral boundary conditions   (changed sign)
+         CALL lbc_lnk_multi( zwx, 'U', -1. , zwy, 'V', -1. )
          !                                !-- Slopes of tracer
          zslpx(:,:,jpk) = 0._wp                 ! bottom values
@@ -191,5 +191,5 @@
             END DO
          END DO
-         CALL lbc_lnk( zwx, 'U', -1. )   ;   CALL lbc_lnk( zwy, 'V', -1. )   ! lateral boundary conditions   (changed sign)
+         CALL lbc_lnk_multi( zwx, 'U', -1. , zwy, 'V', -1. )   ! lateral boundary conditions   (changed sign)
          !
          DO jk = 1, jpkm1                 !-- Tracer advective trend
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90	(revision 9094)
@@ -155,5 +155,5 @@
             END DO
          END DO
-         CALL lbc_lnk( zfc(:,:,:), 'T', 1. )   ;   CALL lbc_lnk( zfd(:,:,:), 'T', 1. )   ! Lateral boundary conditions 
+         CALL lbc_lnk_multi( zfc(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1. )   ! Lateral boundary conditions 
          
          !
@@ -181,6 +181,5 @@
          END DO 
          !--- Lateral boundary conditions 
-         CALL lbc_lnk( zfu(:,:,:), 'T', 1. )   ;   CALL lbc_lnk( zfd(:,:,:), 'T', 1. )
-         CALL lbc_lnk( zfc(:,:,:), 'T', 1. )   ;   CALL lbc_lnk( zwx(:,:,:), 'T', 1. )
+         CALL lbc_lnk_multi( zfu(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1., zfc(:,:,:), 'T', 1.,  zwx(:,:,:), 'T', 1. )
 
          !--- QUICKEST scheme
@@ -271,5 +270,5 @@
             END DO
          END DO
-         CALL lbc_lnk( zfc(:,:,:), 'T', 1. )   ;   CALL lbc_lnk( zfd(:,:,:), 'T', 1. )   ! Lateral boundary conditions 
+         CALL lbc_lnk_multi( zfc(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1. )   ! Lateral boundary conditions 
 
          
@@ -300,6 +299,5 @@
 
          !--- Lateral boundary conditions 
-         CALL lbc_lnk( zfu(:,:,:), 'T', 1. )      ;     CALL lbc_lnk( zfd(:,:,:), 'T', 1. )
-         CALL lbc_lnk( zfc(:,:,:), 'T', 1. )      ;     CALL lbc_lnk( zwy(:,:,:), 'T', 1. )
+         CALL lbc_lnk_multi( zfu(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1., zfc(:,:,:), 'T', 1., zwy(:,:,:), 'T', 1. )
 
          !--- QUICKEST scheme
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90	(revision 9094)
@@ -123,5 +123,5 @@
             &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=           ' Sa: ', mask2=tmask, clinfo3='tra' )
          ! lateral boundary conditions ; just need for outputs
-         CALL lbc_lnk( ahu_bbl, 'U', 1. )     ;     CALL lbc_lnk( ahv_bbl, 'V', 1. )
+         CALL lbc_lnk_multi( ahu_bbl, 'U', 1. , ahv_bbl, 'V', 1. )
          CALL iom_put( "ahu_bbl", ahu_bbl )   ! bbl diffusive flux i-coef
          CALL iom_put( "ahv_bbl", ahv_bbl )   ! bbl diffusive flux j-coef
@@ -136,5 +136,5 @@
             &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=           ' Sa: ', mask2=tmask, clinfo3='tra' )
          ! lateral boundary conditions ; just need for outputs
-         CALL lbc_lnk( utr_bbl, 'U', 1. )     ;   CALL lbc_lnk( vtr_bbl, 'V', 1. )
+         CALL lbc_lnk_multi( utr_bbl, 'U', 1. , vtr_bbl, 'V', 1. )
          CALL iom_put( "uoce_bbl", utr_bbl )  ! bbl i-transport
          CALL iom_put( "voce_bbl", vtr_bbl )  ! bbl j-transport
@@ -491,5 +491,5 @@
       INTEGER ::   ji, jj                      ! dummy loop indices
       INTEGER ::   ii0, ii1, ij0, ij1, ios     ! local integer
-      REAL(wp), DIMENSION(jpi,jpj) ::   zmbk   ! workspace
+      REAL(wp), DIMENSION(jpi,jpj) ::   zmbku, zmbkv   ! workspace
       !!
       NAMELIST/nambbl/ ln_trabbl, nn_bbl_ldf, nn_bbl_adv, rn_ahtbbl, rn_gambbl
@@ -539,6 +539,7 @@
       END DO
       ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk
-      zmbk(:,:) = REAL( mbku_d(:,:), wp )   ;   CALL lbc_lnk(zmbk,'U',1.)   ;   mbku_d(:,:) = MAX( INT( zmbk(:,:) ), 1 )
-      zmbk(:,:) = REAL( mbkv_d(:,:), wp )   ;   CALL lbc_lnk(zmbk,'V',1.)   ;   mbkv_d(:,:) = MAX( INT( zmbk(:,:) ), 1 )
+      zmbku(:,:) = REAL( mbku_d(:,:), wp )   ;     zmbkv(:,:) = REAL( mbkv_d(:,:), wp )  
+      CALL lbc_lnk_multi( zmbku,'U',1., zmbk,'V',1.) 
+      mbku_d(:,:) = MAX( INT( zmbku(:,:) ), 1 ) ;  mbkv_d(:,:) = MAX( INT( zmbkv(:,:) ), 1 )
       !
                                         !* sign of grad(H) at u- and v-points; zero if grad(H) = 0
@@ -562,5 +563,5 @@
          END DO
       END DO
-      CALL lbc_lnk( e3u_bbl_0, 'U', 1. )   ;   CALL lbc_lnk( e3v_bbl_0, 'V', 1. )      ! lateral boundary conditions
+      CALL lbc_lnk_multi( e3u_bbl_0, 'U', 1. , e3v_bbl_0, 'V', 1. )      ! lateral boundary conditions
       !
       !                             !* masked diffusive flux coefficients
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap_blp.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap_blp.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap_blp.F90	(revision 9094)
@@ -227,7 +227,5 @@
       END SELECT
       !
-      DO jn = 1, kjpt
-         CALL lbc_lnk( zlap(:,:,:,jn) , 'T', 1. )     ! Lateral boundary conditions (unchanged sign)
-      END DO
+      CALL lbc_lnk( zlap(:,:,:,:) , 'T', 1. )     ! Lateral boundary conditions (unchanged sign)
       !                                               ! Partial top/bottom cell: GRADh( zlap )  
       IF( ln_isfcav .AND. ln_zps ) THEN   ;   CALL zps_hde_isf( kt, kjpt, zlap, zglu, zglv, zgui, zgvi )  ! both top & bottom
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90	(revision 9094)
@@ -309,5 +309,5 @@
          ENDIF
          !
-         CALL lbc_lnk( tsa(:,:,:,jp_tem), 'T', 1. )   ;   CALL lbc_lnk( tsa(:,:,:,jp_sal), 'T', 1. )
+         CALL lbc_lnk_multi( tsa(:,:,:,jp_tem), 'T', 1., tsa(:,:,:,jp_sal), 'T', 1. )
          !
          IF( lwp .AND. l_LB_debug ) THEN
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90	(revision 9094)
@@ -106,7 +106,6 @@
       CALL Agrif_tra                     ! AGRIF zoom boundaries
 #endif
-      !
-      CALL lbc_lnk( tsa(:,:,:,jp_tem), 'T', 1._wp )      ! local domain boundaries  (T-point, unchanged sign)
-      CALL lbc_lnk( tsa(:,:,:,jp_sal), 'T', 1._wp )
+      !                                              ! local domain boundaries  (T-point, unchanged sign)
+      CALL lbc_lnk_multi( tsa(:,:,:,jp_tem), 'T', 1., tsa(:,:,:,jp_sal), 'T', 1. )
       !
       IF( ln_bdy )   CALL bdy_tra( kt )  ! BDY open boundaries
@@ -164,9 +163,8 @@
          ENDIF
          !
-         DO jn = 1, jpts
-            CALL lbc_lnk( tsb(:,:,:,jn), 'T', 1._wp ) 
-            CALL lbc_lnk( tsn(:,:,:,jn), 'T', 1._wp )
-            CALL lbc_lnk( tsa(:,:,:,jn), 'T', 1._wp )
-         END DO
+         CALL lbc_lnk_multi( tsb(:,:,:,jp_tem), 'T', 1., tsb(:,:,:,jp_sal), 'T', 1., &
+                  &          tsn(:,:,:,jp_tem), 'T', 1., tsn(:,:,:,jp_sal), 'T', 1., &
+                  &          tsa(:,:,:,jp_tem), 'T', 1., tsa(:,:,:,jp_sal), 'T', 1.  )
+         !
       ENDIF     
       !
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90	(revision 9094)
@@ -86,6 +86,5 @@
          END DO
 !!gm this should be moved in trdtra.F90 and done on all trends
-         CALL lbc_lnk( ztrdt, 'T', 1. )
-         CALL lbc_lnk( ztrds, 'T', 1. )
+         CALL lbc_lnk_multi( ztrdt, 'T', 1. , ztrds, 'T', 1. )
 !!gm
          CALL trd_tra( kt, 'TRA', jp_tem, jptra_zdf, ztrdt )
Index: /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90
===================================================================
--- /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90	(revision 9093)
+++ /branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90	(revision 9094)
@@ -144,5 +144,5 @@
             END DO
          END DO
-         CALL lbc_lnk( pgtu(:,:,jn), 'U', -1. )   ;   CALL lbc_lnk( pgtv(:,:,jn), 'V', -1. )   ! Lateral boundary cond.
+         CALL lbc_lnk_multi( pgtu(:,:,jn), 'U', -1. , pgtv(:,:,jn), 'V', -1. )   ! Lateral boundary cond.
          !
       END DO
@@ -183,5 +183,5 @@
             END DO
          END DO
-         CALL lbc_lnk( pgru , 'U', -1. )   ;   CALL lbc_lnk( pgrv , 'V', -1. )   ! Lateral boundary conditions
+         CALL lbc_lnk_multi( pgru , 'U', -1. , pgrv , 'V', -1. )   ! Lateral boundary conditions
          !
       END IF
@@ -305,5 +305,5 @@
             END DO
          END DO
-         CALL lbc_lnk( pgtu(:,:,jn), 'U', -1. )   ;   CALL lbc_lnk( pgtv(:,:,jn), 'V', -1. )   ! Lateral boundary cond.
+         CALL lbc_lnk_multi( pgtu(:,:,jn), 'U', -1. , pgtv(:,:,jn), 'V', -1. )   ! Lateral boundary cond.
          !
       END DO
@@ -353,5 +353,5 @@
          END DO
 
-         CALL lbc_lnk( pgru , 'U', -1. )   ;   CALL lbc_lnk( pgrv , 'V', -1. )   ! Lateral boundary conditions
+         CALL lbc_lnk_multi( pgru , 'U', -1. , pgrv , 'V', -1. )   ! Lateral boundary conditions
          !
       END IF
@@ -404,7 +404,7 @@
             END DO
          END DO
-         CALL lbc_lnk( pgtui(:,:,jn), 'U', -1. ); CALL lbc_lnk( pgtvi(:,:,jn), 'V', -1. )   ! Lateral boundary cond.
          !
       END DO
+      CALL lbc_lnk_multi( pgtui(:,:,:), 'U', -1. , pgtvi(:,:,:), 'V', -1. )   ! Lateral boundary cond.
 
       IF( PRESENT( prd ) ) THEN    !==  horizontal derivative of density anomalies (rd)  ==!    (optional part)
@@ -449,5 +449,5 @@
             END DO
          END DO
-         CALL lbc_lnk( pgrui   , 'U', -1. ); CALL lbc_lnk( pgrvi   , 'V', -1. )   ! Lateral boundary conditions
+         CALL lbc_lnk_multi( pgrui, 'U', -1. , pgrvi, 'V', -1. )   ! Lateral boundary conditions
          !
       END IF  
