Index: trunk/FACT++/src/drivectrl.cc
===================================================================
--- trunk/FACT++/src/drivectrl.cc	(revision 18386)
+++ trunk/FACT++/src/drivectrl.cc	(revision 18387)
@@ -2171,4 +2171,10 @@
     }
 
+    int ResetError()
+    {
+        const int rc = CheckState();
+        return rc>0 ? rc : T::GetCurrentState();
+    }
+
     // --------------------- Others ---------------------
 
@@ -2508,9 +2514,6 @@
     {
         const Time now;
-        if (now>fSunRise)
-        {
-            if (T::GetCurrentState()==State::kParking)
-                return State::kParking;
-
+        if (now>fSunRise && T::GetCurrentState()!=State::kParking)
+        {
             if (T::GetCurrentState()>State::kLocked && T::GetCurrentState()!=StateMachineImp::kError)
                 return Park();
@@ -2788,7 +2791,11 @@
             ("Park the telescope");
 
-        T::AddEvent("STOP")(State::kUnavailable)(State::kAvailable)(State::kArmed)(State::kInitialized)(State::kStopping)(State::kParking)(State::kMoving)(State::kTracking)(State::kOnTrack)(State::kPositioningFailed)(State::kAllowedRangeExceeded)
+        T::AddEvent("STOP")(State::kUnavailable)(State::kAvailable)(State::kArmed)(State::kInitialized)(State::kStopping)(State::kParking)(State::kMoving)(State::kTracking)(State::kOnTrack)
             (bind(&StateMachineDrive::StopMovement, this))
             ("Stop any kind of movement.");
+
+        T::AddEvent("RESET", State::kPositioningFailed, State::kAllowedRangeExceeded)
+            (bind(&StateMachineDrive::ResetError, this))
+            ("Acknoledge an internal error (PositioningFailed, AllowedRangeExceeded)");
 
         T::AddEvent("TPOINT", State::kOnTrack)
