As for the time being off some seconds: that's a known issue in gpsbabel skytraq module (calculation of leap seconds isn't fully implemented yet).

(@Robert: is there a generic function in gpsbabel which provides this that I could use?)

No.  It's not really something we can compute.     Time nerds decide when Leap Seconds are added or subtracted from UTC based on the rotation of the Earth.   GPS maintains a constant time based on International Atomic Time.   The constellation of SVs broadcasts the current offset between UTC and IAT in the packets and most GPS receivers that expose such things bring that data out to the programmer.  (See  line 705 of garmin.c)

If the unit doesn't provide this (shame on them) and you don't want to introduce the calculations of the Earth's orbit into the module (please don't) it'd be OK with me if you just use a hard-coded "19 seconds" and move on.   Most users of data loggers frankly won't notice the times being slightly off from UTC anyway as long as they're all correct relative to each others.

Oh, and the elevation in his example would have changed only slightly when adjusted for sea level as his reported altitude would be something like 10x the moon's orbit from Earth. :-)