diff --git a/src/opendrive_geometry.cpp b/src/opendrive_geometry.cpp
index dc3ef7bac93a7f6d7ee3e50013aac16ba72f6df1..f3380799a6ecf86d299f20045e4a54e5d2cb0c1b 100644
--- a/src/opendrive_geometry.cpp
+++ b/src/opendrive_geometry.cpp
@@ -54,12 +54,18 @@ void COpendriveGeometry::set_start_pose(TOpendriveWorldPose &pose)
 
 void COpendriveGeometry::set_max_s(double s)
 {
-  this->max_s=s*this->scale_factor;
+  if(s<this->min_s)
+    this->max_s=this->min_s;
+  else
+    this->max_s=s*this->scale_factor;
 }
 
 void COpendriveGeometry::set_min_s(double s)
 {
-  this->min_s=s*this->scale_factor;
+  if(s>this->max_s)
+    this->min_s=this->max_s;
+  else
+    this->min_s=s*this->scale_factor;
 }
 
 bool COpendriveGeometry::get_local_pose(const TOpendriveTrackPose &track,TOpendriveLocalPose &local) const