That delay is causing major issues as noted. I suggest going back to your prior code that was causing a problem and post that - you've hidden your real issue. Most GPS devices transmit once a second, by putting in that delay, you guarantee that you'll overflow the serial buffer.