Index: src/mlx/gui/flight.py
===================================================================
--- src/mlx/gui/flight.py	(revision 88)
+++ src/mlx/gui/flight.py	(revision 89)
@@ -6,4 +6,5 @@
 import mlx.fs as fs
 from mlx.checks import PayloadChecker
+import mlx.util as util
 
 import datetime
@@ -1477,6 +1478,4 @@
     def activate(self):
         """Called when the page is activated."""
-        self._flightEnded = False
-        
         self._starButton.set_sensitive(True)
         self._starButton.set_active(False)
@@ -1516,4 +1515,7 @@
 
         self._vref.set_sensitive(False)
+        # FIXME: Perhaps a separate initialize() call which would set up
+        # defaults?
+        self._flightEnded = False
 
     def _starButtonClicked(self, button):
@@ -1557,6 +1559,123 @@
     def _forwardClicked(self, button):
         """Called when the forward button is clicked."""
-        #self._wizard.nextPage()
-        self.finalize()
+        self._wizard.nextPage()
+
+#-----------------------------------------------------------------------------
+
+class FinishPage(Page):
+    """Flight finish page."""
+    def __init__(self, wizard):
+        """Construct the finish page."""
+        help = "There are some statistics about your flight below.\n\n" \
+               "Review the data, also on earlier pages, and if you are\n" \
+               "satisfied, you can save or send your PIREP."
+
+        super(FinishPage, self).__init__(wizard, "Finish", help)
+        
+        alignment = gtk.Alignment(xalign = 0.5, yalign = 0.5,
+                                  xscale = 0.0, yscale = 0.0)
+
+        table = gtk.Table(5, 2)
+        table.set_row_spacings(4)
+        table.set_col_spacings(16)
+        table.set_homogeneous(True)
+        alignment.add(table)
+        self.setMainWidget(alignment)
+
+        labelAlignment = gtk.Alignment(xalign=1.0, xscale=0.0)
+        label = gtk.Label("Flight rating:")
+        labelAlignment.add(label)
+        table.attach(labelAlignment, 0, 1, 0, 1)
+
+        labelAlignment = gtk.Alignment(xalign=0.0, xscale=0.0)
+        self._flightRating = gtk.Label()
+        self._flightRating.set_width_chars(7)
+        self._flightRating.set_alignment(0.0, 0.5)
+        self._flightRating.set_use_markup(True)
+        labelAlignment.add(self._flightRating)
+        table.attach(labelAlignment, 1, 2, 0, 1)
+
+        labelAlignment = gtk.Alignment(xalign=1.0, xscale=0.0)
+        label = gtk.Label("Flight time:")
+        labelAlignment.add(label)
+        table.attach(labelAlignment, 0, 1, 1, 2)
+
+        labelAlignment = gtk.Alignment(xalign=0.0, xscale=0.0)
+        self._flightTime = gtk.Label()
+        self._flightTime.set_width_chars(10)
+        self._flightTime.set_alignment(0.0, 0.5)
+        self._flightTime.set_use_markup(True)
+        labelAlignment.add(self._flightTime)
+        table.attach(labelAlignment, 1, 2, 1, 2)
+
+        labelAlignment = gtk.Alignment(xalign=1.0, xscale=0.0)
+        label = gtk.Label("Block time:")
+        labelAlignment.add(label)
+        table.attach(labelAlignment, 0, 1, 2, 3)
+
+        labelAlignment = gtk.Alignment(xalign=0.0, xscale=0.0)
+        self._blockTime = gtk.Label()
+        self._blockTime.set_width_chars(10)
+        self._blockTime.set_alignment(0.0, 0.5)
+        self._blockTime.set_use_markup(True)
+        labelAlignment.add(self._blockTime)
+        table.attach(labelAlignment, 1, 2, 2, 3)
+
+        labelAlignment = gtk.Alignment(xalign=1.0, xscale=0.0)
+        label = gtk.Label("Distance flown:")
+        labelAlignment.add(label)
+        table.attach(labelAlignment, 0, 1, 3, 4)
+
+        labelAlignment = gtk.Alignment(xalign=0.0, xscale=0.0)
+        self._distanceFlown = gtk.Label()
+        self._distanceFlown.set_width_chars(10)
+        self._distanceFlown.set_alignment(0.0, 0.5)
+        self._distanceFlown.set_use_markup(True)
+        labelAlignment.add(self._distanceFlown)
+        table.attach(labelAlignment, 1, 2, 3, 4)
+        
+        labelAlignment = gtk.Alignment(xalign=1.0, xscale=0.0)
+        label = gtk.Label("Fuel used:")
+        labelAlignment.add(label)
+        table.attach(labelAlignment, 0, 1, 4, 5)
+
+        labelAlignment = gtk.Alignment(xalign=0.0, xscale=0.0)
+        self._fuelUsed = gtk.Label()
+        self._fuelUsed.set_width_chars(10)
+        self._fuelUsed.set_alignment(0.0, 0.5)
+        self._fuelUsed.set_use_markup(True)
+        labelAlignment.add(self._fuelUsed)
+        table.attach(labelAlignment, 1, 2, 4, 5)
+
+        self._saveButton = self.addButton("S_ave PIREP...")
+        self._saveButton.set_use_underline(True)
+        #self._saveButton.connect("clicked", self._saveClicked)
+        
+        self._sendButton = self.addButton("_Send PIREP...", True)
+        self._sendButton.set_use_underline(True)
+        #self._sendButton.connect("clicked", self._sendClicked)
+
+    def activate(self):
+        """Activate the page."""
+        flight = self._wizard.gui._flight
+        rating = flight.logger.getRating()
+        if rating<0:
+            self._flightRating.set_markup('<b><span foreground="red">NO GO</span></b>')
+        else:
+            self._flightRating.set_markup("<b>%.1f %%</b>" % (rating,))
+
+        flightLength = flight.flightTimeEnd - flight.flightTimeStart
+        self._flightTime.set_markup("<b>%s</b>" % \
+                                    (util.getTimeIntervalString(flightLength),))
+        
+        blockLength = flight.blockTimeEnd - flight.blockTimeStart
+        self._blockTime.set_markup("<b>%s</b>" % \
+                                   (util.getTimeIntervalString(blockLength),))
+
+        self._distanceFlown.set_markup("<b>%.2f NM</b>" % \
+                                       (flight.flownDistance,))
+        
+        self._fuelUsed.set_markup("<b>%.0f kg</b>" % \
+                                  (flight.endFuel - flight.startFuel,))
 
 #-----------------------------------------------------------------------------
@@ -1588,4 +1707,5 @@
         self._landingPage = LandingPage(self) 
         self._pages.append(self._landingPage)
+        self._pages.append(FinishPage(self))
         
         maxWidth = 0
Index: src/mlx/gui/monitor.py
===================================================================
--- src/mlx/gui/monitor.py	(revision 77)
+++ src/mlx/gui/monitor.py	(revision 89)
@@ -4,4 +4,5 @@
 
 import mlx.const as const
+import mlx.util as util
 
 import time
@@ -170,4 +171,8 @@
         table.attach(label, 4, 5, 6, 7)
         table.attach(self._windDirection, 5, 6, 6, 7)
+
+        (label, self._position) = self._createLabeledEntry("Position:", 25)
+        table.attach(label, 6, 7, 6, 7)
+        table.attach(self._position, 7, 10, 6, 7)
 
         alignment.add(table)
@@ -240,4 +245,5 @@
             self._windSpeed.set_text("-")
             self._windDirection.set_text("-")
+            self._position.set_text("-")
         else:
             self._timestamp.set_text(time.strftime("%H:%M:%S",
@@ -304,4 +310,6 @@
             self._windSpeed.set_text("%.0f" % (aircraftState.windSpeed,))
             self._windDirection.set_text("%03.0f" % (aircraftState.windDirection,))
+            self._position.set_text(util.getCoordinateString((aircraftState.latitude,
+                                                              aircraftState.longitude)))
 
 #------------------------------------------------------------------------------
