Paul - 2013-06-12

It works switching speed and height reading:

Index: mtkbabel
===================================================================
--- mtkbabel    (revision 61)
+++ mtkbabel    (working copy)
@@ -989,6 +989,14 @@
             printf("Record LONGITUDE: %s (%.9f)\n", uc(unpack('H*', $buffer)), $record_longitude) if ($debug >= $LOG_DEBUG);
         }


+        undef($record_speed);
+        if ($log_format & $LOG_FORMAT_SPEED) {
+            $buffer = my_read($fp, $SIZEOF_LOG_SPEED);
+            $checksum ^= packet_checksum($buffer);
+            $record_speed = mtk2number($buffer, $SIZEOF_LOG_SPEED);
+            printf("Record SPEED: %s (%.6f)\n", uc(unpack('H*', $buffer)), $record_speed) if ($debug >= $LOG_DEBUG);
+        }
+        
         undef($record_height);
         if ($log_format & $LOG_FORMAT_HEIGHT) {
             $buffer = my_read($fp, $SIZEOF_LOG_HEIGHT);
@@ -997,14 +1005,6 @@
             printf("Record HEIGHT: %s (%.6f)\n", uc(unpack('H*', $buffer)), $record_height) if ($debug >= $LOG_DEBUG);
         }


-        undef($record_speed);
-        if ($log_format & $LOG_FORMAT_SPEED) {
-            $buffer = my_read($fp, $SIZEOF_LOG_SPEED);
-            $checksum ^= packet_checksum($buffer);
-            $record_speed = mtk2number($buffer, $SIZEOF_LOG_SPEED);
-            printf("Record SPEED: %s (%.6f)\n", uc(unpack('H*', $buffer)), $record_speed) if ($debug >= $LOG_DEBUG);
-        }
-
         undef($record_heading);
         if ($log_format & $LOG_FORMAT_HEADING) {
             $buffer = my_read($fp, $SIZEOF_LOG_HEADING);