GPS: set update frequency

As far as I can tell, the fact that "next" occur in the middle of an sentence also indicates that "Serial1.available() > 0" may return false while a sentence is being transmitted. To me that is an unexpected behavior. Does this indicate that the buffer is full?

Serial data transmission is slow and asynchronous and 9600 is a pretty slow baud rate. The arduino is very quick by comparison; it can pull a character from the buffer and do a whole bunch of work before the next one arrives. It is a very very common misconception that you'll get all the serial data you want in one continuous read. If you're in the middle of a sentence and there's nothing to read, it does not mean that the buffer is full, on the contrary, it means it's empty.

If you're sending serial data, that's slow too and has a small buffer. If you send more than enough to fill the buffer, the arduino will wait until there's space in the buffer again. In this circumstance, the act of sending more than 64 (varies by arduino) characters can delay you enough that your serial reads appear to pull a whole packet at once. In the case of a GPS sentence though as they can be quite long, you may well fill the read buffer and start dropping incoming data during the send delay.

As to ignoring sentences, you may get lucky and get better data from the manufacturer. If not, another possibility is to take a look at the tinyGPS library. Without looking, I assume it's hardcoded to some extent as to which sentences it can parse. It might be plausible to create a hacked copy that only 'knows' the ones you want.