Overtime is the whole problem
Most attendance software records two punches a day and calls the rest arithmetic. That fails the moment a shift extends, because there is no way to distinguish overtime from someone who simply forgot to punch out.
- Overtime-in and overtime-out recorded as their own event types
- Break-out and break-in captured separately, not inferred
- Every punch keeps its terminal, so you can tell which dock or gate it came from
- Nothing silently rounded — the raw event stays readable