diff --git a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
index 4f422851a7b19a730006d8194cbceba259f1e20e..43d576747c87edd6dbd63e6c04f2a190562fa757 100644
--- a/src/LIB/SURCOUCHE/src/mode_mppdb.f90
+++ b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
@@ -95,6 +95,7 @@ CONTAINS
        !
        ! NO Father !
        MPPDB_FATHER_WORLD = .TRUE.  
+       CALL MPI_BARRIER(NMNH_COMM_WORLD,ierr) 
        !
        ! if no config file , inactive MPPDB routines
        !
@@ -154,10 +155,13 @@ CONTAINS
        ! clone the son
        !
        ALLOCATE(info_error(MPPDB_NBSON))
+       CALL MPI_BARRIER(NMNH_COMM_WORLD,ierr) 
        !
        CALL MPI_COMM_SPAWN(MPPDB_EXEC, MPI_ARGV_NULL,MPPDB_NBSON,INFO_SPAWN, &
             RANK_FATHER, NMNH_COMM_WORLD,MPPDB_INTER_COMM ,info_error, ierr)
        !
+       CALL MPI_BARRIER(NMNH_COMM_WORLD,ierr) 
+       !
        DEALLOCATE(info_error)
        !
        ! merge the communicator
@@ -170,9 +174,12 @@ CONTAINS
        !         
        !... My rank in MPPDB_INTRA_COMM
        CALL MPI_COMM_RANK(MPPDB_INTRA_COMM, mppdb_irank_intra, ierr)
-       IF (MPPDB_DEBUG) print*,"MPPDB_INIT :: FATHER mppdb_irank_intra=", mppdb_irank_intra &
+       IF (MPPDB_IRANK_WORLD.EQ.0) THEN 
+          !  I'm the first father 
+       IF (MPPDB_DEBUG) print*,"MPPDB_INIT :: FIRST FATHER mppdb_irank_intra=", mppdb_irank_intra &
             ,"mppdb_nbproc_intra=",mppdb_nbproc_intra
        call flush(6)
+       endif
        !
        ! Wait the sons
        !
@@ -187,9 +194,11 @@ CONTAINS
        !                                                                         !
        !-------------------------------------------------------------------------!
        !
+       CALL MPI_BARRIER(NMNH_COMM_WORLD,ierr) 
+       !
        ! merge the communicator
        !
-       drapeau=.FALSE.
+       drapeau=.TRUE.
        CALL MPI_INTERCOMM_MERGE(MPPDB_INTER_COMM, drapeau, MPPDB_INTRA_COMM, ierr)
        !
        !... Numbre of processus in MPPDB_INTRA_COMM.
@@ -207,7 +216,7 @@ CONTAINS
        call system(MPPDB_COMMAND)
        !
        MPPDB_DEBUG = .TRUE.
-       IF (MPPDB_DEBUG) write(200,*) "MPPDB_INIT :: FIRSTSON mppdb_irank_intra=", mppdb_irank_intra &
+       IF (MPPDB_DEBUG) write(200,*) "MPPDB_INIT :: FIRST SON mppdb_irank_intra=", mppdb_irank_intra &
             ,"MPPDB_IRANK_WORLD=",MPPDB_IRANK_WORLD
        !
        IF (MPPDB_IRANK_WORLD.EQ.0) THEN