This bug affects users of My GPS Coordinates Pro, Radius on Map, and Radius on Map Pro that have used the Degrees Minutes Seconds (DMS) coordinate format whilst saving or editing a Location or Radius.

Overview and example

Solution Explanation

Recovery helper tool

New York example

Sydney example

London example

Intended use


Overview and example

In My GPS Coordinates Pro, the form looks like this and appears in 3 different locations in the app:


In Radius on Map, the form looks like this and appears in 2 different locations in the app:


Note that this bit is identical:


The issue is with the seconds field:


Upon saving, the seconds component is divided by 3660 instead of 3600, and this errors accrues with each subsequent edit or save. Even if you opened the form, made no changes, and closed it by hitting the 'Save' button instead of 'Cancel' more error was introduced.

Examples:
Original



Save 1
Notice that the map pin has drifted SE.



Save 2



Save 3



Save 4



Save 5




Solution Explanation

This seems like a disaster right?
It's really not though, because the error is deterministic.
Each time, the seconds component is being multiplied by (3600/3660) roughly 0.983606

lat:
21.26 * 0.983606 = 20.91146356
20.91 * 0.983606 = 20.56720146
20.57 * 0.983606 = 20.23277542
20.23 * 0.983606 = 19.89834938 (rounds to 19.90)

lon:
40.69 * 0.983606 = 40.02292814
40.02 * 0.983606 = 39.36391212
39.36 * 0.983606 = 38.71473216
38.71 * 0.983606 = 38.07538826 (rounds to 38.08)

In effect, the error is drifting towards (0,0), the center of this image:



We also know that rounding will prevent the error from crossing a 'minute barrier'
example:
0.30 * 0.983606 = 0.2950818 (rounds to 0.30)
0.30 * 0.983606 = 0.2950818 (rounds to 0.30)
0.30 * 0.983606 = 0.2950818 (rounds to 0.30)

Knowing what's discussed above is already helpful, as we can establish a bounding box:
Bounding boxes in the NW hemisphere will be defined by the point in the Southeast corner and the next northerly and westerly minute barriers. (New York)
Bounding boxes in the NE hemisphere will be defined by the point in the Southwest corner and the next northerly and easterly minute barriers. (London)
Bounding boxes in the SW hemisphere will be defined by the point in the Northeast corner and the next southerly and westerly minute barriers.
Bounding boxes in the SE hemisphere will be defined by the point in the Northwest corner and the next southerly and easterly minute barriers. (Sydney)

Additionally, we can also 'undo' each flawed iteration with some precision in most cases.

Limitations:
If one of seconds components is very small, the bearing calculation and iterative reversals won't be very accurate. This is a little noticeable in the London example, where the latitude seconds are ~02.2

After thoughts:
If at the rounding barrier of ~0.3, then there's not much hope.
If it's well below the rounding barrier, say 0.28 or less, I think that would mean that no error was introduced to the respective latitude or longitude.
for example:
lat:51 40 0.25" N
lon:01 40 55.56" N
The true lat should be 51 40 0.25" N
lon might be anything, but that would be the horizontal edge of the bounding box that the incorrect point defines an endpoint of. ie: you could still find the point by walking in a line for a max distance of 1 minute of longitude.

Recovery helper tool

For lack of a better name this thing will be referred to as the 'Recovery helper tool'.
To launch it:
1) You must be on the map page
2) Your coordinate format must be DMS (degrees, minutes, seconds)
3) Edit the location or radius of concern
4) When the edit form appears, press and hold the 'Cancel' button for about 4 seconds. That is a long time, but the idea is to prevent someone from accidentally launching it.




This will show:
1) The bounding box that we know contains the true point. (red)
2) A bearing on which we think our true point lies. (yellow)
3) 30 dots that represent iterative reversals of the bug. (cyan/light blue)


Back to the New York example:

After launching the 'Recovery helper tool'
Zooming out to show the entire bounding box:

Zooming back in:



Pretty close



Another example: Sydney

The original:

The result after 8 saves:

:



Pretty close



Another example: London

The original:

The result after 15 saves:

:



Intended Use

The above examples are academic and aren't very realistic, because there are easier ways to find the Statue of Liberty, Big Ben, etc.

Let's say the you are a hunter and have used this app to save good spots to set up your tree stand. During the off season, maybe you entered some notes for some of the locations. Anyway you saved it an unknown number of times which introduced significant error.
You arrive at the incorrect saved location and nothing looks familiar.
How is this tool useful? You're way out in the woods, so the map won't work you might think.
The map will still work, it just won't load imagery. North is up, East is right, etc. Also note the map scale in the corner. Your movement on the blank map will also give a sense of scale.


Open the edit popup and press and hold the 'cancel' button. Again, you must be in DMS mode.




Move Northwest until you reach the real point.


Hopefully that's helpful.
All of this because I typed '3660' instead of '3600' sometime in early 2016.

Please let me know about errors like this. If they exist, it's because I don't know about them.

Contact

Email: kevinwillett80@yahoo.com
Please include 'DMS bug (Apple)' in the subject.