Index: src/mlx/checks.py
===================================================================
--- src/mlx/checks.py	(revision 319)
+++ src/mlx/checks.py	(revision 320)
@@ -288,6 +288,7 @@
         
         if shouldLog:
-            logger.message(self._getLogTimestamp(state),
-                           self._getMessage(flight, state))
+            message = self._getMessage(flight, state)
+            if message is not None:
+                logger.message(self._getLogTimestamp(state), message)
         
 #-------------------------------------------------------------------------------
@@ -371,5 +372,6 @@
     def _getMessage(self, flight, state):
         """Get the message."""
-        return self._template % (self._getValue(state),)
+        value = self._getValue(state)        
+        return None if value is None else self._template % (value,)
 
 #---------------------------------------------------------------------------------------
@@ -411,17 +413,46 @@
 #---------------------------------------------------------------------------------------
 
-class NAV1Logger(GenericStateChangeLogger):
+class NAVLogger(StateChangeLogger, DelayedChangeMixin):
+    """Logger for NAV radios.
+
+    It also logs the OBS frequency set."""
+    def __init__(self, attrName, logName):
+        """Construct the NAV logger."""
+        StateChangeLogger.__init__(self, logInitial = True)
+        DelayedChangeMixin.__init__(self)
+
+        self._attrName = attrName
+        self._logName = logName
+        
+    def _getValue(self, state):
+        """Get the value.
+
+        If both the frequency and the obs settings are available, a tuple
+        containing them is returned, otherwise None."""
+        frequency = getattr(state, self._attrName)
+        obs = getattr(state, self._attrName + "_obs")
+        return None if frequency is None or obs is None else (frequency, obs)
+
+    def _getMessage(self, flight, state):
+        """Get the message."""
+        value = self._getValue(state)
+        return None if value is None else \
+               (u"%s frequency: %s MHz [%d\u00b0]" % (self._logName, value[0], value[1]))
+
+#---------------------------------------------------------------------------------------
+
+class NAV1Logger(NAVLogger):
     """Logger for the NAV1 radio setting."""
     def __init__(self):
         """Construct the logger."""
-        super(NAV1Logger, self).__init__("nav1", "NAV1 frequency: %s MHz")
-
-#---------------------------------------------------------------------------------------
-
-class NAV2Logger(GenericStateChangeLogger):
+        super(NAV1Logger, self).__init__("nav1", "NAV1")
+
+#---------------------------------------------------------------------------------------
+
+class NAV2Logger(NAVLogger):
     """Logger for the NAV2 radio setting."""
     def __init__(self):
         """Construct the logger."""
-        super(NAV2Logger, self).__init__("nav2", "NAV2 frequency: %s MHz")
+        super(NAV2Logger, self).__init__("nav2", "NAV2")
 
 #---------------------------------------------------------------------------------------
Index: src/mlx/fs.py
===================================================================
--- src/mlx/fs.py	(revision 317)
+++ src/mlx/fs.py	(revision 320)
@@ -229,6 +229,10 @@
     - nav1: the frequency of the NAV1 radio in MHz (string). Can be None, if
     the frequency is unreliable or meaningless.
+    - nav1_obs: the OBS setting of the NAV1 radio in degrees (int). Can be None, if
+    the value is unreliable or meaningless.
     - nav2: the frequency of the NAV1 radio in MHz (string). Can be None, if
     the frequency is unreliable or meaningless.
+    - nav2_obs: the OBS setting of the NAV2 radio in degrees (int). Can be None, if
+    the value is unreliable or meaningless.
     - adf1: the frequency of the ADF1 radio in kHz (string). Can be None, if
     the frequency is unreliable or meaningless.
Index: src/mlx/fsuipc.py
===================================================================
--- src/mlx/fsuipc.py	(revision 317)
+++ src/mlx/fsuipc.py	(revision 320)
@@ -1177,5 +1177,7 @@
                       ("altimeter", 0x0330, "H"),
                       ("nav1", 0x0350, "H"),
+                      ("nav1_obs", 0x0c4e, "H"),
                       ("nav2", 0x0352, "H"),
+                      ("nav2_obs", 0x035e, "H"),
                       ("adf1_main", 0x034c, "H"),
                       ("adf1_ext", 0x0356, "H"),
@@ -1362,5 +1364,7 @@
            
         state.nav1 = AircraftModel.convertFrequency(data[self._monidx_nav1])
+        state.nav1_obs = data[self._monidx_nav1_obs]
         state.nav2 = AircraftModel.convertFrequency(data[self._monidx_nav2])
+        state.nav2_obs = data[self._monidx_nav2_obs]
         state.adf1 = \
             AircraftModel.convertADFFrequency(data[self._monidx_adf1_main],
