summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/planner.c7
-rw-r--r--core/profile.c4
2 files changed, 7 insertions, 4 deletions
diff --git a/core/planner.c b/core/planner.c
index e13fdf9a3..ab53dc0be 100644
--- a/core/planner.c
+++ b/core/planner.c
@@ -1056,8 +1056,11 @@ bool plan(struct diveplan *diveplan, struct dive *dive, int timestep, struct dec
stopping = false;
}
}
-
- deco_time = clock - deco_state->bottom_time;
+ /* When calculating deco_time, we should pretend the final ascent rate is always the same,
+ * otherwise odd things can happen, such as CVA causing the final ascent to start *later*
+ * if the ascent rate is slower, which is completely nonsensical.
+ * Assume final ascent takes 20s, which is the time taken to ascend at 9m/min from 3m */
+ deco_time = clock - deco_state->bottom_time - stoplevels[2] / last_ascend_rate + 20;
} while (!is_final_plan);
decostoptable[decostopcounter].depth = 0;
diff --git a/core/profile.c b/core/profile.c
index 1e717f318..83ff20055 100644
--- a/core/profile.c
+++ b/core/profile.c
@@ -1084,9 +1084,9 @@ void calculate_deco_information(struct dive *dive, struct divecomputer *dc, stru
if (final_tts > 0)
deco_time = pi->maxtime + final_tts - time_deep_ceiling;
else if (time_clear_ceiling > 0)
- /* Consistent with planner, deco_time ends after ascending (20-40s @9m/min from 3-6m)
+ /* Consistent with planner, deco_time ends after ascending (20s @9m/min from 3m)
at end of whole minute after clearing ceiling */
- deco_time = ROUND_UP(time_clear_ceiling, 60) + 30 - time_deep_ceiling;
+ deco_time = ROUND_UP(time_clear_ceiling, 60) + 20 - time_deep_ceiling;
vpmb_next_gradient(deco_time, surface_pressure / 1000.0);
final_tts = 0;
last_ndl_tts_calc_time = 0;