The default frame (RANGE UNBOUNDED PRECEDING TO CURRENT ROW) is asymmetric: everything up to here, nothing after. FIRST_VALUE never notices — the first row is always inside. LAST_VALUE asks for the frame's end, and the frame's end is the current row — so the column that looks like 'the season's final reading' is 'this row, echoed'. Plausible on sorted data, never errors, wrong on every row but the last.
SELECT day, LAST_VALUE (secs) OVER ( ORDER BY day ) AS final FROM runs ORDER BY day;
SELECT day, LAST_VALUE (secs) OVER ( ORDER BY day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS final FROM runs ORDER BY day;
Each day's 'season final' echoed that day's own time — with ORDER BY and no frame (the default), the window ends at the current row, so LAST_VALUE returns the current row, not the season's last; an explicit UNBOUNDED FOLLOWING frame fixes it.
Explicit ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING; FIRST_VALUE over reversed order; MAX(...) OVER when 'last by order' is 'max by key'.