Index: locale/en/mlx.po
===================================================================
--- locale/en/mlx.po	(revision 563)
+++ locale/en/mlx.po	(revision 564)
@@ -939,4 +939,8 @@
 "Please, provide a comment or a delay code to proceed.</span>"
 
+msgid "finish_help_goodtime"
+msgstr ""
+"<span>\n\n\n</span>"
+
 msgid "finish_rating"
 msgstr "Flight rating:"
Index: locale/hu/mlx.po
===================================================================
--- locale/hu/mlx.po	(revision 563)
+++ locale/hu/mlx.po	(revision 564)
@@ -940,4 +940,8 @@
 "Kérlek, írj megjegyzést vagy adj meg késési kódot a PIREP elküldése előtt.</span>"
 
+msgid "finish_help_goodtime"
+msgstr ""
+"<span>\n\n\n</span>"
+
 msgid "finish_rating"
 msgstr "Pontszám:"
Index: src/mlx/flight.py
===================================================================
--- src/mlx/flight.py	(revision 430)
+++ src/mlx/flight.py	(revision 564)
@@ -5,4 +5,5 @@
 import const
 import util
+import time
 
 import threading
@@ -24,4 +25,11 @@
     It is also the hub for the other main objects participating in the handling of
     the flight."""
+
+    # The difference in minutes from the schedule which is considered a bit big
+    TIME_WARNING_DIFFERENCE = 5
+
+    # The difference in minutes from the schedule which is considered too big
+    TIME_ERROR_DIFFERENCE = 15
+
     @staticmethod
     def canLogCruiseAltitude(stage):
@@ -30,4 +38,30 @@
         return stage in [const.STAGE_CRUISE, const.STAGE_DESCENT,
                          const.STAGE_LANDING]
+
+    @staticmethod
+    def isTimeDifferenceTooMuch(scheduledTime, realTimestamp):
+        """Determine if the given real time differs to much from the scheduled
+        time.
+
+        Returns a tuple of:
+        - a boolean indicating if the difference is enough to warrant at least
+          a warning
+        - a boolean indicating if the difference is too big, i. e. unacceptable
+          without explanation."""
+        realTime = time.gmtime(realTimestamp)
+
+        scheduledMinute = scheduledTime.hour * 60 + scheduledTime.minute
+        realMinute = realTime.tm_hour * 60 + realTime.tm_min
+
+        diff1 = scheduledMinute - realMinute
+        diff2 = -1 * diff1
+
+        if diff1 < 0: diff1 += 60*24
+        else: diff2 += 60*24
+
+        diff = min(diff1, diff2)
+
+        return (diff>Flight.TIME_WARNING_DIFFERENCE,
+                diff>Flight.TIME_ERROR_DIFFERENCE)
 
     def __init__(self, logger, gui):
@@ -283,4 +317,28 @@
         """Get the RTO state."""
         return self._rtoState
+
+    @property
+    def blockTimeStartWrong(self):
+        """Determine if the block time start is wrong compared to the scheduled
+        departure time.
+
+        Returns a tuple of:
+        - a boolean indicating if the difference warrants a warning
+        - a boolean indicating if the difference warrants not only a warning,
+          but an error as well."""
+        return self.isTimeDifferenceTooMuch(self.bookedFlight.departureTime,
+                                            self.blockTimeStart)
+
+    @property
+    def blockTimeEndWrong(self):
+        """Determine if the block time end is wrong compared to the scheduled
+        arrival time.
+
+        Returns a tuple of:
+        - a boolean indicating if the difference warrants a warning
+        - a boolean indicating if the difference warrants not only a warning,
+          but an error as well."""
+        return self.isTimeDifferenceTooMuch(self.bookedFlight.arrivalTime,
+                                            self.blockTimeEnd)
 
     def handleState(self, oldState, currentState):
Index: src/mlx/gui/flight.py
===================================================================
--- src/mlx/gui/flight.py	(revision 563)
+++ src/mlx/gui/flight.py	(revision 564)
@@ -2815,5 +2815,5 @@
     def __init__(self, wizard):
         """Construct the finish page."""
-        help = xstr("finish_help") + xstr("finish_help_wrongtime")
+        help = xstr("finish_help") + xstr("finish_help_goodtime")
         super(FinishPage, self).__init__(wizard, xstr("finish_title"), help)
 
@@ -3049,11 +3049,4 @@
             self._flightRating.set_markup("<b>%.1f %%</b>" % (rating,))
 
-        bookedFlight = self._wizard.bookedFlight
-
-        (markup, tooBigDeparture) = \
-            self._formatTime(bookedFlight.departureTime, flight.blockTimeStart)
-
-        self._depTime.set_markup(markup)
-
         flightLength = flight.flightTimeEnd - flight.flightTimeStart
         self._flightTime.set_markup("<b>%s</b>" % \
@@ -3063,16 +3056,4 @@
         self._blockTime.set_markup("<b>%s</b>" % \
                                    (util.getTimeIntervalString(blockLength),))
-
-        (markup, tooBigArrival) = \
-            self._formatTime(bookedFlight.arrivalTime, flight.blockTimeEnd)
-
-        self._tooBigTimeDifference = tooBigDeparture or tooBigArrival
-
-        if self._tooBigTimeDifference:
-            self.setHelp(xstr("finish_help") + xstr("finish_help_wrongtime"))
-        else:
-            self.setHelp(xstr("finish_help"))
-
-        self._arrTime.set_markup(markup)
 
         self._distanceFlown.set_markup("<b>%.2f NM</b>" % \
@@ -3101,5 +3082,5 @@
             self._gate.set_sensitive(False)
 
-        self.updateButtons()
+        self._updateTimes()
 
     def updateButtons(self):
@@ -3147,5 +3128,5 @@
     def _flightTypeChanged(self, comboBox):
         """Called when the flight type has changed."""
-        self.updateButtons()
+        self._updateTimes()
 
     def _gateChanged(self, comboBox):
@@ -3310,34 +3291,11 @@
         pass
 
-    def _formatTime(self, scheduledTime, realTimestamp):
+    def _formatTime(self, scheduledTime, realTimestamp, (warning, error)):
         """Format the departure or arrival time based on the given data as a
-        markup for a label.
-
-        If the difference is greater than 15 minutes, the text should be
-        red. Otherwise, if the difference is greater that 5 minutes, the text
-        should be yellow. Otherwise it should be black.
-
-        scheduledTime is the scheduled time as a datetime object
-        realTimestamp is the real time as a timestamp (i.e. seconds
-        since the epoch)
-
-        Returns a tuple consisting of:
-        - the markup,
-        - a boolean indicating if the difference is greater than 15 minutes."""
+        markup for a label."""
         realTime = time.gmtime(realTimestamp)
 
-        scheduledMinute = scheduledTime.hour * 60 + scheduledTime.minute
-        realMinute = realTime.tm_hour * 60 + realTime.tm_min
-
-        diff1 = scheduledMinute - realMinute
-        diff2 = -1 * diff1
-
-        if diff1 < 0: diff1 += 60*24
-        else: diff2 += 60*24
-
-        diff = min(diff1, diff2)
-
-        if diff>5:
-            colour = "red" if diff>15 else "orange"
+        if warning:
+            colour = "red" if error else "orange"
             markupBegin = '<span foreground="%s">' % (colour,)
             markupEnd = '</span>'
@@ -3351,8 +3309,39 @@
                   markupEnd)
 
-        # print "mlx.gui.flight.FinishPage._formatTime: markup='%s', diff=%d" % \
-        #       (markup, diff)
-
-        return (markup, diff>15)
+        return markup
+
+    def _updateTimes(self):
+        """Format the flight times and the help text according to the flight
+        type.
+
+        The buttons are also updated.
+        """
+        flight = self._wizard.gui._flight
+        bookedFlight = flight.bookedFlight
+
+        (departureWarning, departureError) = flight.blockTimeStartWrong
+        (arrivalWarning, arrivalError) = flight.blockTimeEndWrong
+
+        if self.flightType==const.FLIGHTTYPE_VIP:
+            departureError = arrivalError = False
+
+        self._tooBigTimeDifference = departureError or arrivalError
+
+        if self._tooBigTimeDifference and self.flightType is not None:
+            self.setHelp(xstr("finish_help") + xstr("finish_help_wrongtime"))
+        else:
+            self.setHelp(xstr("finish_help") + xstr("finish_help_goodtime"))
+
+        self._depTime.set_markup(self._formatTime(bookedFlight.departureTime,
+                                                  flight.blockTimeStart,
+                                                  (departureWarning,
+                                                   departureError)))
+
+        self._arrTime.set_markup(self._formatTime(bookedFlight.arrivalTime,
+                                                  flight.blockTimeEnd,
+                                                  (arrivalWarning,
+                                                   arrivalError)))
+
+        self.updateButtons()
 
 #-----------------------------------------------------------------------------
