diff --git a/include/curves/piecewise_curve.h b/include/curves/piecewise_curve.h
index fe99f43736a54a2663d51c022ae4b8b9d63f43bc..73eb0daca5b3f375d4814dd5a9122c19fc274434 100644
--- a/include/curves/piecewise_curve.h
+++ b/include/curves/piecewise_curve.h
@@ -85,13 +85,11 @@ struct piecewise_curve : public curve_abc<Time, Numeric, Dim, Safe, Point>
     ///
     void add_curve(const curve_t& cf)
     {
+        const double margin = 1e-9;
         // Check time continuity : Beginning time of pol must be equal to T_max_ of actual piecewise curve.
-        if (size_!=0)
+        if (size_!=0 && !(fabs(cf.min()-T_max_)<margin))
         {
-            if (!(fabs(cf.min()-T_max_)<std::numeric_limits<Time>::epsilon()))
-            {
-                throw std::invalid_argument("Can not add new Polynom to PiecewiseCurve : time discontinuity between T_max_ and pol.min()");
-            }
+            throw std::invalid_argument("Can not add new Polynom to PiecewiseCurve : time discontinuity between T_max_ and pol.min()");
         }
         curves_.push_back(cf);
         size_ = curves_.size();
@@ -105,7 +103,7 @@ struct piecewise_curve : public curve_abc<Time, Numeric, Dim, Safe, Point>
     ///
     bool is_continuous(const std::size_t order)
     {
-        double margin = 0.001;
+        const double margin = 1e-9;
         bool isContinuous = true;
         std::size_t i=0;
         point_t value_end, value_start;