diff --git a/src/operator/Slice.cpp b/src/operator/Slice.cpp
index 8e9f71e73efa7b3b99a3bcd03b5f23806a48869f..31c7c09c9ff41c163f5d505bd4ce6b3aeaf42872 100644
--- a/src/operator/Slice.cpp
+++ b/src/operator/Slice.cpp
@@ -258,7 +258,7 @@ bool Aidge::Slice_Op::forwardDims(bool allowDataDependency) {
                                 static_cast<DimSize_t>(this->starts()[i]) :
                                 static_cast<DimSize_t>(this->starts()[i] + static_cast<DimSize_t>(getInput(0)->dims()[axis]));
             // Clamp start to the range [0, axis_dim]
-            start = std::max(static_cast<DimSize_t>(0), std::min(start, getInput(0)->dims()[axis]));
+            start = std::max(static_cast<DimSize_t>(0), std::min(start, getInput(0)->dims()[axis]-1));
 
             DimSize_t end = this->ends()[i] >= 0 ?
                             static_cast<DimSize_t>(this->ends()[i]) :