2) A round trip isn't lossless, but your notes make it seem like it should be.
Yes, the issue here is the option fields.  I tagged everything that needs to be looked at with "XXX - Dustin:"
There are three pieces of information that need user input: track number, name, and description.  I am guessing
that this input will be in the form of "options" but I have yet to look into it.  This is something that I will hopefully
have time for shortly and may ask for a pointer or two. 

The actual data is lossless, however.

OK, I've modified the test suite to be less strict about file equality and only test the payload.

Index: testo
RCS file: /cvsroot/gpsbabel/gpsbabel/testo,v
retrieving revision 1.193
diff -p -u -r1.193 testo
--- testo    14 May 2008 15:54:55 -0000    1.193
+++ testo    19 Jun 2008 16:42:53 -0000
@@ -1340,5 +1340,15 @@ compare ${TMPDIR}/exif-dat.csv ${REFEREN
 ${PNAME} -i vidaone -f ${REFERENCE}/track/vidaone.gpb -t -o unicsv -F ${TMPDIR}/vidaone.csv
 compare ${TMPDIR}/vidaone.csv ${REFERENCE}/track/vidaone.csv
+# iGo8
+# This format has some jitter in the first 64 bytes of the header.
+# So we read our reference track, spin to GPX.
+# Read that track, spin to igo.
+# read the igo file we just wrote, and spin that to GPX.
+# compare the two GPX files.
+${PNAME} -i igo8 -f reference/track/igo8.trk -o gpx -F ${TMPDIR}/igo.gpx
+${PNAME} -i gpx -f ${TMPDIR}/igo.gpx -o igo8 -F ${TMPDIR}/new-igo.trk
+${PNAME} -i igo8 -f ${TMPDIR}/new-igo.trk -o gpx -F ${TMPDIR}/new-igo2.gpx
+compare ${TMPDIR}/igo.gpx ${TMPDIR}/new-igo2.gpx
 exit 0