Index: NEMO/trunk/src/OCE/BDY/bdydyn2d.F90
===================================================================
--- NEMO/trunk/src/OCE/BDY/bdydyn2d.F90	(revision 15289)
+++ NEMO/trunk/src/OCE/BDY/bdydyn2d.F90	(revision 15345)
@@ -92,5 +92,5 @@
                llrecv2(2)   = llrecv2(2)   .OR. lrecv_bdyext(ib_bdy,2,2,ir)     ! might search point towards bdy on the east
                llsend3(3:4) = llsend3(3:4) .OR. lsend_bdyint(ib_bdy,3,3:4,ir)   ! north/south, V points
-               llsend3(3)   = llsend3(3)   .OR. lsend_bdyext(ib_bdy,3,3,ir)     ! neighbour might search point towards its north bdy 
+               llsend3(3)   = llsend3(3)   .OR. lsend_bdyext(ib_bdy,3,3,ir)     ! neighbour might search point towards its north bdy
                llrecv3(3:4) = llrecv3(3:4) .OR. lrecv_bdyint(ib_bdy,3,3:4,ir)   ! north/south, V points
                llrecv3(4)   = llrecv3(4)   .OR. lrecv_bdyext(ib_bdy,3,4,ir)     ! might search point towards bdy on the north
Index: NEMO/trunk/src/OCE/BDY/bdyini.F90
===================================================================
--- NEMO/trunk/src/OCE/BDY/bdyini.F90	(revision 15289)
+++ NEMO/trunk/src/OCE/BDY/bdyini.F90	(revision 15345)
@@ -739,6 +739,6 @@
                ! ==> cannot compute the point x -> need to receive it
                IF( iibi==0     .OR. ii1==0     .OR. ii2==0     .OR. ii3==0     )   lrecv_bdyint(ib_bdy,igrd,jpwe,ir) = .TRUE.
+               IF( iibe==0                                                     )   lrecv_bdyext(ib_bdy,igrd,jpwe,ir) = .TRUE.
                IF( iibi==jpi+1 .OR. ii1==jpi+1 .OR. ii2==jpi+1 .OR. ii3==jpi+1 )   lrecv_bdyint(ib_bdy,igrd,jpea,ir) = .TRUE.  
-               IF( iibe==0                                                     )   lrecv_bdyext(ib_bdy,igrd,jpwe,ir) = .TRUE.
                IF( iibe==jpi+1                                                 )   lrecv_bdyext(ib_bdy,igrd,jpea,ir) = .TRUE.  
                ! Check if neighbour has its rim parallel to its mpi subdomain border and located next to its halo.
@@ -747,10 +747,12 @@
                ! :.....|_._:_____|   (1) W neighbour         E neighbour (2)   |_____:_._|.....:
                ! ==> the neighbour cannot compute the point x -> need to send it
-               IF( ii==nn_hls+1   .AND. mpiSnei(nn_hls,jpwe) > -1 .AND. &
-                  &     ( iibi==ii+1 .OR. ii1==ii+1 .OR. ii2==ii+1 .OR. ii3==ii+1) )   lsend_bdyint(ib_bdy,igrd,jpwe,ir) = .TRUE.
-               IF( ii==jpi-nn_hls .AND. mpiSnei(nn_hls,jpea) > -1 .AND. &
-                  &     ( iibi==ii-1 .OR. ii1==ii-1 .OR. ii2==ii-1 .OR. ii3==ii-1) )   lsend_bdyint(ib_bdy,igrd,jpea,ir) = .TRUE.
-               IF( ii==nn_hls+1   .AND. mpiSnei(nn_hls,jpwe) > -1 .AND. iibe==ii+1 )   lsend_bdyext(ib_bdy,igrd,jpwe,ir) = .TRUE.
-               IF( ii==jpi-nn_hls .AND. mpiSnei(nn_hls,jpea) > -1 .AND. iibe==ii-1 )   lsend_bdyext(ib_bdy,igrd,jpea,ir) = .TRUE.
+               IF( ii ==     2*nn_hls   .AND. mpiSnei(nn_hls,jpwe) > -1 ) THEN   ! 2*nn_hls      -> ji=jpi of western neighbour
+                  IF( iibi==ii+1 .OR. ii1==ii+1 .OR. ii2==ii+1 .OR. ii3==ii+1 )   lsend_bdyint(ib_bdy,igrd,jpwe,ir) = .TRUE.
+                  IF( iibe==ii+1                                              )   lsend_bdyext(ib_bdy,igrd,jpwe,ir) = .TRUE.
+               ENDIF
+               IF( ii == jpi-2*nn_hls+1 .AND. mpiSnei(nn_hls,jpea) > -1 ) THEN   ! jpi-2*nn_hls+1-> ji=1   of eastern neighbour
+                  IF( iibi==ii-1 .OR. ii1==ii-1 .OR. ii2==ii-1 .OR. ii3==ii-1 )   lsend_bdyint(ib_bdy,igrd,jpea,ir) = .TRUE.
+                  IF( iibe==ii-1                                              )   lsend_bdyext(ib_bdy,igrd,jpea,ir) = .TRUE.
+               ENDIF
                !
                ! search neighbour in the north/south direction   
@@ -762,6 +764,6 @@
                !  v       o           (4)  |       |
                IF( ijbi==0     .OR. ij1==0     .OR. ij2==0     .OR. ij3==0     )   lrecv_bdyint(ib_bdy,igrd,jpso,ir) = .TRUE.
+               IF( ijbe==0                                                     )   lrecv_bdyext(ib_bdy,igrd,jpso,ir) = .TRUE.
                IF( ijbi==jpj+1 .OR. ij1==jpj+1 .OR. ij2==jpj+1 .OR. ij3==jpj+1 )   lrecv_bdyint(ib_bdy,igrd,jpno,ir) = .TRUE.
-               IF( ijbe==0                                                     )   lrecv_bdyext(ib_bdy,igrd,jpso,ir) = .TRUE.
                IF( ijbe==jpj+1                                                 )   lrecv_bdyext(ib_bdy,igrd,jpno,ir) = .TRUE.
                ! Check if neighbour has its rim parallel to its mpi subdomain     _________  border and next to its halo
@@ -770,10 +772,12 @@
                !      :_________:  (3) S neighbour          N neighbour (4)   v  |    o    |   
                ! ==> the neighbour cannot compute the point x -> need to send it
-               IF( ij==nn_hls+1   .AND. mpiSnei(nn_hls,jpso) > -1 .AND. &
-                  &     ( ijbi==ij+1 .OR. ij1==ij+1 .OR. ij2==ij+1 .OR. ij3==ij+1) )   lsend_bdyint(ib_bdy,igrd,jpso,ir) = .TRUE.
-               IF( ij==jpj-nn_hls .AND. mpiSnei(nn_hls,jpno) > -1 .AND. &
-                  &     ( ijbi==ij-1 .OR. ij1==ij-1 .OR. ij2==ij-1 .OR. ij3==ij-1) )   lsend_bdyint(ib_bdy,igrd,jpno,ir) = .TRUE.
-               IF( ij==nn_hls+1   .AND. mpiSnei(nn_hls,jpso) > -1 .AND. ijbe==ij+1 )   lsend_bdyext(ib_bdy,igrd,jpso,ir) = .TRUE.
-               IF( ij==jpj-nn_hls .AND. mpiSnei(nn_hls,jpno) > -1 .AND. ijbe==ij-1 )   lsend_bdyext(ib_bdy,igrd,jpno,ir) = .TRUE.
+               IF( ij ==     2*nn_hls   .AND. mpiSnei(nn_hls,jpso) > -1 ) THEN   ! 2*nn_hls      -> jj=jpj of southern neighbour 
+                  IF( ijbi==ij+1 .OR. ij1==ij+1 .OR. ij2==ij+1 .OR. ij3==ij+1 )   lsend_bdyint(ib_bdy,igrd,jpso,ir) = .TRUE.
+                  IF( ijbe==ij+1                                              )   lsend_bdyext(ib_bdy,igrd,jpso,ir) = .TRUE.
+               ENDIF
+               IF( ij == jpj-2*nn_hls+1 .AND. mpiSnei(nn_hls,jpno) > -1 ) THEN   ! jpj-2*nn_hls+1-> jj=1   of northern neighbour
+                  IF( ijbi==ij-1 .OR. ij1==ij-1 .OR. ij2==ij-1 .OR. ij3==ij-1 )   lsend_bdyint(ib_bdy,igrd,jpno,ir) = .TRUE.
+                  IF( ijbe==ij-1                                              )   lsend_bdyext(ib_bdy,igrd,jpno,ir) = .TRUE.
+               ENDIF
             END DO
          END DO
