The Global Positioning System (GPS) can provide your location, altitude, and speed with near-pinpoint accuracy, but the system has intrinsic error sources that have to be taken into account when a receiver reads the GPS signals from the constellation of satellites above our heads.
The main GPS error source is due to inaccurate time-keeping by the receiver's clock. Microwave radio signals travelling at the speed of light from at least three satellites are used by the receiver's built-in computer to calculate its position, altitude and velocity.
Tiny discrepancies between the GPS receiver's onboard clock and GPS time, which synchronises the whole global positioning system, mean distances calculated can drift. There are two solutions to this problem. The first would be to use an atomic clock in each receiver costing $100,000. The second is to use some clever mathematical trickery to account for the time-keeping error based on how the signals from three or more satellite signals are detected by the receiver, which essentially allows the receiver to reset its clock. The latter is the less expensive solution used by Sat Nav manufacturers.