diff --git a/include/opendrive_signal.h b/include/opendrive_signal.h
index df959debd5ff491496ec3adbad618957a1206d81..cce3f20913797f18a78252c181b7fb39e6c62eaf 100644
--- a/include/opendrive_signal.h
+++ b/include/opendrive_signal.h
@@ -23,7 +23,7 @@ class COpendriveSignal
     double scale_factor;
   protected:
     void load(signals::signal_type &signal_info,COpendriveRoadSegment *segment);
-    void update_references(std::map<COpendriveRoadSegment *,COpendriveRoadSegment *> &segment_refs);
+    void update_references(segment_up_ref_t &segment_refs);
     void set_scale_factor(double scale);
   public:
     COpendriveSignal();
diff --git a/src/opendrive_signal.cpp b/src/opendrive_signal.cpp
index 76f401590d7b3b3cb7cb9f0d569673b12d86d33b..d5d202a90d141197bcff5c8555d1da1c85ae036b 100644
--- a/src/opendrive_signal.cpp
+++ b/src/opendrive_signal.cpp
@@ -48,9 +48,10 @@ void COpendriveSignal::load(signals::signal_type &signal_info,COpendriveRoadSegm
   this->segment=segment;
 }
 
-void COpendriveSignal::update_references(std::map<COpendriveRoadSegment *,COpendriveRoadSegment *> &segment_refs)
+void COpendriveSignal::update_references(segment_up_ref_t &segment_refs)
 {
-  this->segment=segment_refs[this->segment];
+  if(segment_refs.find(this->segment)!=segment_refs.end())
+    this->segment=segment_refs[this->segment];
 }
 
 void COpendriveSignal::set_scale_factor(double scale)