diff --git a/Train/SimpleTrainTrack.mch b/Train/SimpleTrainTrack.mch
index b34d333e55109ba4d9c4396e6debf7e8e6f447eb..eec275545bc87d6ab29819c8641e3b89fa5bdc40 100644
--- a/Train/SimpleTrainTrack.mch
+++ b/Train/SimpleTrainTrack.mch
@@ -7,12 +7,26 @@ CONSTANTS
   TrackElementNumber, TRACK, TTD_TrackElements
 PROPERTIES
   TrackElementNumber : NATURAL1
-& TRACK = 1..TrackElementNumber
+& TRACK = 0..TrackElementNumber
 
 & TTD_TrackElements : TTDS --> FIN1(TRACK)
 
 & TrackElementNumber = 30
-& TTD_TrackElements = {ttd1 |-> 1..10 , ttd2 |-> 11..25 , ttd3 |-> 26..30}
+& TTD_TrackElements = {ttd1 |-> 0..10 , ttd2 |-> 11..25 , ttd3 |-> 26..30}
+VARIABLES
+  occ
+INVARIANT
+  occ <: TTDS
+INITIALISATION occ := {}
+OPERATIONS
+  TTD_Occupied(ttd) = PRE ttd:TTDS \ occ THEN
+    occ := occ \/ {ttd}
+  END;
+  TTD_Free(ttd) = PRE ttd:occ THEN
+    occ := occ \ {ttd}
+  END
 DEFINITIONS
- "LibrarySVG.def" // enable to use the external functions in the VisB json file
+ "LibrarySVG.def"; // enable to use the external functions in the VisB json file
+  OCC_TE == union(ran(%tt.(tt:occ|TTD_TrackElements(tt))));
+  FREE_TE == union(ran(%tt.(tt/:occ|TTD_TrackElements(tt))))
 END
\ No newline at end of file
diff --git a/Train/Track.json b/Train/Track.json
index dc4626698dc4ef90f5274ad5b7c7c8c0a2f23328..8325b3bb053fd0c9dcd1a650ec0caa14932e3a0d 100644
--- a/Train/Track.json
+++ b/Train/Track.json
@@ -5,27 +5,40 @@
     {
       "id":"track_polyline",
       "attr":"points",
-      "value":"svg_axis(TRACK,100.0/real(TrackElementNumber),1.0,100.0,1.0)",
+      "value":"svg_axis({TrackElementNumber+1} \\/ TRACK ,100.0/real(TrackElementNumber+1),1.0,100.0,1.0)",
       "comment":"show ticks for Track units"
     },
     {
       "id":"ttd_polyline",
       "attr":"points",
-      "value":"svg_set_polygon(ran(%tt.(tt:TTDS|max(TTD_TrackElements(tt)))),100.0/real(TrackElementNumber),1.0,100.0,2.0)",
+      "value":"svg_axis({0} \\/ ran(%tt.(tt:TTDS|1+max(TTD_TrackElements(tt)))),100.0/real(TrackElementNumber+1),1.0,100.0,2.0)",
       "comment":"show ticks for TTD Limits"
     },
     {
       "id":"occupied_ttd_polygon",
       "attr":"points",
-      "value":"svg_axis(union(ran(%tt.(tt:{ttd1}|TTD_TrackElements(tt)))),100.0/real(TrackElementNumber),1.0,100.0,2.0)",
+      "value":"svg_set_polygon(OCC_TE,100.0/real(TrackElementNumber+1),0.0,100.0,2.0)",
       "comment":"show ticks for TTD Limits"
     },
     {
       "id":"cleared_ttd_polygon",
       "attr":"points",
-      "value":"svg_set_polygon(union(ran(%tt.(tt:{ttd2,ttd3}|TTD_TrackElements(tt)))),100.0/real(TrackElementNumber),1.0,100.0,2.0)",
+      "value":"svg_set_polygon(FREE_TE,100.0/real(TrackElementNumber+1),0.0,100.0,2.0)",
       "comment":"show ticks for TTD Limits"
     }
     ],
-  "events":[ ]
+  "events":[ 
+    {
+      "id":"occupied_ttd_polygon",
+      "event":"TTD_Free",
+      "optional" : true,
+      "hovers": [{ "attr":"stroke", "enter":"black", "leave":"none"}]
+    },
+    {
+      "id":"cleared_ttd_polygon",
+      "event":"TTD_Occupied",
+      "optional" : true,
+      "hovers": [{ "attr":"stroke", "enter":"black", "leave":"none"}]
+    }
+    ]
 }
\ No newline at end of file
diff --git a/Train/Track.svg b/Train/Track.svg
index e028a48bdd54d9b7f6d898af7d069699a3605e70..6f5a9802e943a502a2ff243f52132ddce9001be9 100644
--- a/Train/Track.svg
+++ b/Train/Track.svg
@@ -10,12 +10,12 @@
   <polygon id = "track_polyline"
        points="0,0 100,0"
        style="stroke-width: 0.3"
-       stroke="red" fill="none"
+       stroke="black" fill="none"
        transform="translate(10,20.5)" />
   <polygon id = "ttd_polyline"
        points="0,0 100,0"
        style="stroke-width: 0.3"
-       stroke="red" fill="none"
+       stroke="gray" fill="none"
        transform="translate(10,22.5)" />