diff --git a/src/LIB/SURCOUCHE/src/mode_gather.f90 b/src/LIB/SURCOUCHE/src/mode_gather.f90
index 1e8526a91a4df521c17ac6dcae1434d2b519242d..7307df850c392062335e018b83390132e1e364a1 100644
--- a/src/LIB/SURCOUCHE/src/mode_gather.f90
+++ b/src/LIB/SURCOUCHE/src/mode_gather.f90
@@ -1163,13 +1163,15 @@ END IF
 
 END SUBROUTINE GATHERXY_X6
 
-SUBROUTINE GATHERXY_N2(KSEND,KRECV,KROOT,KCOMM)
+SUBROUTINE GATHERXY_N2(KSEND,KRECV,KROOT,KCOMM,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
 USE MODD_IO, ONLY: ISP, ISNPROC
 
 INTEGER,DIMENSION(:,:),TARGET,INTENT(IN) :: KSEND
 INTEGER,DIMENSION(:,:),TARGET,INTENT(INOUT):: KRECV
 INTEGER,                      INTENT(IN) :: KROOT
 INTEGER,                      INTENT(IN) :: KCOMM
+INTEGER,          OPTIONAL,   INTENT(IN) :: KXOBOX,KXEBOX,KYOBOX,KYEBOX
+CHARACTER(LEN=*), OPTIONAL,   INTENT(IN) :: HINTER
 
 INTEGER                        :: JI
 INTEGER                        :: IXO,IXE,IYO,IYE
@@ -1180,20 +1182,24 @@ INTEGER                        :: IERR
 IF (ISP == KROOT)  THEN
   ! I/O proc case
   DO JI=1,ISNPROC
-    CALL GET_DOMWRITE_ll(JI,'global',IXO,IXE,IYO,IYE)
-    ITP=>KRECV(IXO:IXE,IYO:IYE)
-    IF (ISP == JI) THEN 
-      CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE)
-      ITP = KSEND(IXO:IXE,IYO:IYE)
-    ELSE 
-      CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+    CALL GET_DOMWRITE_ll(JI,'global',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
+    IF (IXO /= 0) THEN ! intersection is not empty
+      ITP=>KRECV(IXO:IXE,IYO:IYE)
+      IF (ISP == JI) THEN
+        CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
+        ITP = KSEND(IXO:IXE,IYO:IYE)
+      ELSE
+        CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+      END IF
     END IF
   END DO
-ELSE 
+ELSE
   ! Other processes
-  CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE)
-  ITP=>KSEND(IXO:IXE,IYO:IYE)
-  CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
+  CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
+  IF (IXO /= 0) THEN ! intersection is not empty
+    ITP=>KSEND(IXO:IXE,IYO:IYE)
+    CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
+  END IF
 END IF
 
 END SUBROUTINE GATHERXY_N2