Index: branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedAverageCrossover.cs
===================================================================
--- branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedAverageCrossover.cs	(revision 8228)
+++ branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedAverageCrossover.cs	(revision 9363)
@@ -67,4 +67,5 @@
           int min = bounds[i % bounds.Rows, 0], max = bounds[i % bounds.Rows, 1], step = 1;
           if (bounds.Columns > 2) step = bounds[i % bounds.Rows, 2];
+          max = FloorFeasible(min, max, step, max - 1);
           result[i] = RoundFeasible(min, max, step, avg);
         }
Index: branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedBlendAlphaBetaCrossover.cs
===================================================================
--- branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedBlendAlphaBetaCrossover.cs	(revision 8228)
+++ branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedBlendAlphaBetaCrossover.cs	(revision 9363)
@@ -105,5 +105,5 @@
       if (beta.Value < 0) throw new ArgumentException("RoundedBlendAlphaBetaCrossover: Parameter beta must be greater or equal to 0.", "beta");
       if (bounds == null || bounds.Rows < 1 || bounds.Columns < 2) throw new ArgumentException("RoundedBlendAlphaBetaCrossover: Invalid bounds specified.", "bounds");
-      
+
       int length = betterParent.Length;
       double min, max, d;
@@ -114,4 +114,5 @@
         maxBound = bounds[i % bounds.Rows, 1];
         if (bounds.Columns > 2) step = bounds[i % bounds.Rows, 2];
+        maxBound = FloorFeasible(minBound, maxBound, step, maxBound - 1);
 
         d = Math.Abs(betterParent[i] - worseParent[i]);
Index: branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedBlendAlphaCrossover.cs
===================================================================
--- branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedBlendAlphaCrossover.cs	(revision 8228)
+++ branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedBlendAlphaCrossover.cs	(revision 9363)
@@ -85,17 +85,19 @@
       var result = new IntegerVector(length);
       double max = 0, min = 0, d = 0, resMin = 0, resMax = 0;
-      int minBounds, maxBounds, step = 1;
+      int minBound, maxBound, step = 1;
 
       for (int i = 0; i < length; i++) {
-        minBounds = bounds[i % bounds.Rows, 0];
-        maxBounds = bounds[i % bounds.Rows, 1];
+        minBound = bounds[i % bounds.Rows, 0];
+        maxBound = bounds[i % bounds.Rows, 1];
         if (bounds.Columns > 2) step = bounds[i % bounds.Rows, 2];
+        maxBound = FloorFeasible(minBound, maxBound, step, maxBound - 1);
+
         max = Math.Max(parent1[i], parent2[i]);
         min = Math.Min(parent1[i], parent2[i]);
         d = Math.Abs(max - min);
-        resMin = FloorFeasible(minBounds, maxBounds, step, min - d * alpha.Value);
-        resMax = CeilingFeasible(minBounds, maxBounds, step, max + d * alpha.Value);
+        resMin = FloorFeasible(minBound, maxBound, step, min - d * alpha.Value);
+        resMax = CeilingFeasible(minBound, maxBound, step, max + d * alpha.Value);
 
-        result[i] = RoundFeasible(minBounds, maxBounds, step, resMin + random.NextDouble() * Math.Abs(resMax - resMin));
+        result[i] = RoundFeasible(minBound, maxBound, step, resMin + random.NextDouble() * Math.Abs(resMax - resMin));
       }
       return result;
Index: branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedHeuristicCrossover.cs
===================================================================
--- branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedHeuristicCrossover.cs	(revision 8228)
+++ branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedHeuristicCrossover.cs	(revision 9363)
@@ -88,4 +88,5 @@
         max = bounds[i % bounds.Rows, 1];
         if (bounds.Columns > 2) step = bounds[i % bounds.Rows, 2];
+        max = FloorFeasible(min, max, step, max - 1);
         result[i] = RoundFeasible(min, max, step, betterParent[i] + factor * (betterParent[i] - worseParent[i]));
       }
Index: branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedLocalCrossover.cs
===================================================================
--- branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedLocalCrossover.cs	(revision 8228)
+++ branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedLocalCrossover.cs	(revision 9363)
@@ -64,4 +64,5 @@
         max = bounds[i % bounds.Rows, 1];
         if (bounds.Columns > 2) step = bounds[i % bounds.Rows, 2];
+        max = FloorFeasible(min, max, step, max - 1);
         factor = random.NextDouble();
         result[i] = RoundFeasible(min, max, step, (factor * parent1[i]) + ((1 - factor) * parent2[i]));
Index: branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedUniformArithmeticCrossover.cs
===================================================================
--- branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedUniformArithmeticCrossover.cs	(revision 8228)
+++ branches/OaaS/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/RoundedUniformArithmeticCrossover.cs	(revision 9363)
@@ -85,4 +85,5 @@
           int min = bounds[i % bounds.Rows, 0], max = bounds[i % bounds.Rows, 1], step = 1;
           if (bounds.Columns > 2) step = bounds[i % bounds.Rows, 2];
+          max = FloorFeasible(min, max, step, max - 1);
           double value = alpha.Value * parent1[i] + (1 - alpha.Value) * parent2[i];
           result[i] = RoundFeasible(min, max, step, value);
