diff --git a/src/opendrive_road_segment.cpp b/src/opendrive_road_segment.cpp
index ee78ab6006c11ee8576dfbe7f0b1e6da2e84cba5..2967ed714b94cbb9191c5e275c7645a99d3b0fba 100644
--- a/src/opendrive_road_segment.cpp
+++ b/src/opendrive_road_segment.cpp
@@ -942,8 +942,13 @@ COpendriveRoadSegment *COpendriveRoadSegment::get_sub_segment(node_up_ref_t &new
         new_pose.x=new_point.x;
         new_pose.y=new_point.y;
         new_pose.heading=new_point.heading;
-        geom_it->opendrive->set_start_pose(new_pose);
-        geom_it->opendrive->set_max_s(geom_it->opendrive->get_max_s()-length);
+        if(geom_it->opendrive->get_name()=="Parametric polynomial 3th degree")
+          ((COpendriveParamPoly3 *)geom_it->opendrive)->set_start_pose(new_pose,geom_it->opendrive->get_max_s()-length);
+        else
+        {
+          geom_it->opendrive->set_start_pose(new_pose);
+          geom_it->opendrive->set_max_s(geom_it->opendrive->get_max_s()-length);
+        }
         break;
       }
       else