A couple comments from my GPS experience. First, I seem to recall the GPS units I had would not lock on to satellites, unless they were connected via bluetooth to my NXT. Even if they sat outside for a while, they would only lock on (lights indicated a satellite fix) when the NXT was connected. They all seemed to work, but some were more accurate than others.
Second, it sounds like the accuracy issue may be because of the length of decimal value you're using. If you can move within a few miles, and always get the same reading, it could be rounding off the last couple digits.
OK, I took a quick look at the code. One potential problem is the handling of the decimal value. The code lists this:
your sample shows this:
The code stores the values llll.ll and yyyyy.yy into two integers (each). You should review how the decimal portion of those are handled. If the value .90546 is trimmed to .90, that would cause a significant resolution issue.
Hope that helps
---> Link to lots of MINDSTORMS stuff under my picture --->