I've been at this for so long, my brain is fried, if you guys are interested in this stuff, maybe you can see a problem I simply cannot see. All it is is a microcontroller hooked up to a GPS module that spits out NMEA data over a serial line. All this device is supposed to do is determine if a hardcoded GPS coordinate is N,S,E, or W from your current position. North and South work perfectly, but West and East are weird, I think there is some indexing issue. The GPS continually sends data in ASCII, refreshing every second. I bring in the ASCII values 1 at a time (1 byte of data) using the ReadSCI command. Basically the way it works is it grabs data bytes from the GPS device, looking for the flag "GG" which indicates the start of the data that I want. I have a hardcoded "destination" in the RAM, which is then compare to the data as it flows in the from the GPS. This is what the GPS sends to the microcontroller, each letter or number is 1 byte of data brought in through 1 call of the READSCI routine: Basically I start from the most significant GPS coordinate (the one that changes the least), and work my way down, untill they coordinate coming from the GPS and the hardcoded one do not match, then I break out and simply write an "N" or an "S" to give a simple indication of where I am. Because the GPS values between destination and current position can be different at either 2 bytes after the decimal or 3 or other, I have to keep an index that continues to pull in data from the GPS to get me to the longitude coordinates afterwards. I think the problem lies somewhere here because I cannot get the microcontroller to determine the longitude (east-west) correctly, so the problem would lie somewhere in the WeAreS or WeAreN subroutine. Here is the output of the of the microcontroller: Code follows.