diff -r 6e42d94add55 Src/GPS/u_GPSModuleByVSAGPS.pas --- a/Src/GPS/u_GPSModuleByVSAGPS.pas Fri Jan 13 21:02:47 2017 +0300 +++ b/Src/GPS/u_GPSModuleByVSAGPS.pas Wed Feb 08 17:26:50 2017 +0300 @@ -33,6 +33,7 @@ i_GPSConfig, i_SystemTimeProvider, i_Listener, + u_GeoFunc, u_GPSModuleAbstract, {$if defined(VSAGPS_AS_DLL)} vsagps_public_dll, @@ -960,8 +961,12 @@ Exit; LockGPSData; try - VPositionOK := Nmea_Coord_To_Double(@(pRMC^.lon), VPoint.X) and - Nmea_Coord_To_Double(@(pRMC^.lat), VPoint.Y); + VPoint := DoublePoint(0, 0); + + VPositionOK := + (pRMC^.status = AnsiChar('A')) and + Nmea_Coord_To_Double(@(pRMC^.lon), VPoint.X) and + Nmea_Coord_To_Double(@(pRMC^.lat), VPoint.Y); VUTCDateOK := Nmea_Date_To_DateTime(@(pRMC^.date), VUTCDate); VUTCTimeOK := Nmea_Time_To_DateTime(@(pRMC^.time), VUTCTime); @@ -1619,8 +1624,12 @@ // b) for GN (GP+GL) shows number of all sats //_UpdateSatsInView(pGGA^.sats_in_view); - VPositionOK := Nmea_Coord_To_Double(@(pGGA^.lon), VPoint.X) and - Nmea_Coord_To_Double(@(pGGA^.lat), VPoint.Y); + VPoint := DoublePoint(0, 0); + + VPositionOK := + (pGGA^.quality > 0) and + Nmea_Coord_To_Double(@(pGGA^.lon), VPoint.X) and + Nmea_Coord_To_Double(@(pGGA^.lat), VPoint.Y); VUTCTimeOK := Nmea_Time_To_DateTime(@(pGGA^.time), VUTCTime);