The true track integrates ship speed/heading plus the current-drift vector every step. The DR track integrates only speed and heading — exactly what a navigator without GPS can log — so it diverges from the true track by precisely the current's contribution, not a scripted constant:
v_true = v_ship + v_current (vector sum)
DR error (nm) = haversine(truePos, drPos)
In Celestial mode the fix uses real spherical astronomy. For each body: Hc = asin(sinφ·sinδ + cosφ·cosδ·cosLHA), intercept a = (Ho−Hc)·60 nm along the true azimuth. Three such Lines of Position are intersected by least squares to give the fix — the sextant-error slider directly perturbs Ho, so a sloppier sight visibly worsens the fix.
In GPS mode, satellites are placed at random elevation/azimuth and the actual 4×4 geometry (design) matrix is inverted to get PDOP = √(Qxx+Qyy+Qzz) — a textbook Dilution-of-Precision calculation, not a fixed number. Expected 1σ position error ≈ PDOP × 3 m (typical civilian ranging error).