here we go. the divide-by-zero cancels out. not sure how this was originally noticed. timepoint37 has one divide, one multiply, and one use of every variable except for eta which has two uses. def timepoint35(mark_time, min_delay, eta, remaining_count): X = remaining_count - 1 NA_X = (eta - mark_time) / remaining_count - min_delay NB_X = min_delay * X - NA_X C = eta return C - NA_X * X - NB_X def timepoint36(mark_time, min_delay, eta, remaining_count): X = remaining_count - 1 NA_X = (eta - mark_time) / remaining_count - min_delay NA_XX = ((eta - mark_time) / remaining_count - min_delay) * X NB_X = min_delay * remaining_count - (eta - mark_time) / remaining_count NAXXBX = (eta - mark_time) / remaining_count * (X - 1) + min_delay * (remaining_count - X) C = eta return C - NAXXBX def timepoint37(mark_time, min_delay, eta, remaining_count): return eta - (eta - mark_time) * (1 - 2 / remaining_count) - min_delay