diff --git a/src/main/java/species/DisperseAndMigrateToRiverWithMultiNomDistriAndDeathBasin.java b/src/main/java/species/DisperseAndMigrateToRiverWithMultiNomDistriAndDeathBasin.java
index 2f94f2fb77251603e71c8008cceb858bb3bea754..1c7103af3885d6a61ade07841e3223eef2493e63 100644
--- a/src/main/java/species/DisperseAndMigrateToRiverWithMultiNomDistriAndDeathBasin.java
+++ b/src/main/java/species/DisperseAndMigrateToRiverWithMultiNomDistriAndDeathBasin.java
@@ -1,7 +1,6 @@
 package species;
 
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
@@ -193,41 +192,45 @@ public class DisperseAndMigrateToRiverWithMultiNomDistriAndDeathBasin extends Di
 								totalWeight = totalWeight + weightOfDeathBasin;
 
 								// Afficher le contenu du MAP
-								System.out.println(departure.getName() + ": " + totalWeight);
-								System.out.println("strayedAmount before: " + strayedAmount);
-								Iterator<RiverBasin> iterateur = basinWeightsFromDeparture.keySet().iterator();
-								// Parcourir les clés et afficher les entrées de chaque clé;
-								while (iterateur.hasNext()) {
-									RiverBasin key = iterateur.next();
-									System.out.println(key.getName() + " dist = " + departure.getNeighboursDistances().get(key)
-											+ "=>" + (basinWeightsFromDeparture.get(key)));
-								}
+								/*
+								 * System.out.println(departure.getName() + ": " + totalWeight);
+								 * System.out.println("strayedAmount before: " + strayedAmount); Iterator<RiverBasin>
+								 * iterateur = basinWeightsFromDeparture.keySet().iterator(); while
+								 * (iterateur.hasNext()) { RiverBasin key = iterateur.next();
+								 * System.out.println(key.getName() + " dist = " +
+								 * departure.getNeighboursDistances().get(key) + "=>" +
+								 * (basinWeightsFromDeparture.get(key))); }
+								 */
 
 								// compute sequentially the prob to go into a basin
-								for (Entry<RiverBasin, Double> entry : basinWeightsPerBasin.get(departure).entrySet()) {
+
+								long remainingStrayedAmount = strayedAmount;
+								for (Entry<RiverBasin, Double> entry : basinWeightsFromDeparture.entrySet()) {
 									RiverBasin strayerDestination = entry.getKey();
 									Double weight = entry.getValue();
 									probToGo = weight / totalWeight;
 									// amountToGo = Miscellaneous.binomialForSuperIndividual(group.getPilot(),
 									// strayedAmount, probToGo);
-									amountToGo = aleaGen.getSuccessNumber(strayedAmount, probToGo);
+
+									amountToGo = Math.min(remainingStrayedAmount,
+											aleaGen.getSuccessNumber(strayedAmount, probToGo));
+
 									if (amountToGo > 0) {
 										strayerDestination.addFish(fish.duplicateWithNewPositionAndAmount(group.getPilot(),
 												strayerDestination, amountToGo), group);
+										remainingStrayedAmount -= amountToGo;
+										System.out.println(strayerDestination.getName() + "<-" + amountToGo);
 									}
 
-									totalWeight -= weight;
-									strayedAmount -= amountToGo;
-
-									if (strayedAmount <= 0) {
+									if (remainingStrayedAmount == 0) {
 										// CHECK if it occurs and for which basins
 										break;
 									}
 								}
 							}
 
-							System.out.println("strayedAmount after: " + strayedAmount);
-							System.out.println();
+							// System.out.println("strayedAmount after: " + strayedAmount);
+							// System.out.println();
 
 							// update fish with homing
 							if (homingAmount > 0) {