       siv_start < 0  ||   siv_start >= (int) gps_read_buffer.length()    ||
       hdp_start < 0  ||   hdp_start >= (int) gps_read_buffer.length()    ||
       alt_start < 0  ||   alt_start >= (int) gps_read_buffer.length()    ||
-      altu_start < 0 ||   altu_start >= (int) gps_read_buffer.length())
+      altu_start < 0 ||   altu_start >= (int) gps_read_buffer.length()   ||
+      gps_read_buffer.lastIndexOf('$') > 0)
   {
       gps_valid = false;
       #ifdef GPS_DEBUG_ON

  }
}



void gps_read()

     int incoming_byte = Serial3.read();
     if(incoming_byte == '\n')
     {
       if(validate_gps_buffer())
       {
         if(gps_read_buffer.indexOf("$GPRMC,") == 0)
         {
           #ifdef GPS_DEBUG_ON
           debug_info(F("--GPS BUF RMC--"));
           debug_info(gps_read_buffer);
           #endif
           push_out_nmea_sentence(false);
           parse_gps_buffer_as_rmc();
         }
         else if(gps_read_buffer.indexOf("$GPGGA,") == 0)
         {
           #ifdef GPS_DEBUG_ON
           debug_info(F("--GPS BUF GGA--"));
           debug_info(gps_read_buffer);
           #endif
           push_out_nmea_sentence(false);
           parse_gps_buffer_as_gga();
          }
       }
       gps_read_buffer = "";
     }
