Also, what do 3rd party logs like Dive Log have available to pull the max depth from - the first or second method that you describe?
We wanted to respond to specifically address how Dive Log on iOS handles the maximum depth for the Shearwater dive computers.
The situation for us is slightly more complicated than Tyler described in his response. The additional complication is that the dive header associated with the downloaded dive reports the depth as an integer value whereas the value that you can get from the profile data includes a fractional component. So, for example if your profile data had accurately captured the deepest moment in the dive (i.e. the deepest part of the dive happened to fall on the sampling interval) the depth might have been 82.3 feet but the diver header value would have been reported as 82 feet (which is also the value that you would see on the display of your dive computer). The profile, in this case, would contain a sample at 82.3 feet. Note that the situation can be even more pronounced in the case where the dive was set to record metric values since 25.3 meters has a greater difference from 25 meters relative to what you would see in feet (you would particularly notice this in Dive Log if you switched the measurement system between meter and feet). Also, if I recall correctly, the value in the dive header is truncated rather than rounded so an actual max depth of 82.9 feet would be reported as 82 feet (my recollection on this point could be wrong though so feel free to correct me).
When downloading the Petrel or Perdix, you first download a summary of each dive (known as the “manifest”) and then (in the case of Dive Log at least) we show you those dive summaries and you choose the dives that you want to download. Dive Log then proceeds to download each dive that you select. As it turns out, this “summary” happens to include the maximum depth with the factional component (so from the example above it would show the maximum depth as 82.3 feet). So we keep that value around until we’ve downloaded the actual dive and store that value as the maximum depth for the dive instead of the depth reported in the dive's header data (82 feet in the example).
The bottom line is that Dive Log on iOS records the actual instantaneous maximum depth (including the factional part of the value) as reported by the dive computer as the Max Depth for the dive. The profile data will include all the samples available which might not include a sample at the instantaneous maximum depth reported by the dive computer. Other variations in the depth that you might see relative to other applications are likely the result of the difference between the factional value vs integer value reported by the dive computer during the download due to the additional accuracy in the dive summary list vs the actual dive header.
One final note, if for some reason we do not have a valid fractional depth from the summary information, we do calculate the maximum depth from the profile data. I have never seen a case where this happened, but we chose to fall back on the profile depths (which are fractional) instead of the integer value in the dive header. Finally, if there is no profile samples either then we report the dive header value (i.e. the integer value).
Please feel free to contact us directly if you need any additional information about how Dive Log handles the data that it reads from the Shearwater (or any other) computers.