If you deduct 1 dirham per minute of lateness, you'll end up with two problems: an angry team and bookkeeping migraines for trivial amounts. A bracket-based approach with a built-in grace period works much better.
The model
| Late by | Daily salary deducted |
|---|---|
| 0–10 min | 0% (grace) |
| 11–30 min | 10% |
| 31–60 min | 30% |
| 61+ min | 50% (capped) |
| No-show | 200% (two days) |
Why it works
- The 10-minute grace absorbs traffic, kids, and prayer call variability. People don't feel ambushed.
- Steep jumps at 30 / 60 minutes make the difference between "delayed" and "didn't really come to work" visible to the employee.
- Capping at 50% means there's no reason for someone who's already 90 minutes late to skip the day entirely.
- No-show = 2 days is harsh on purpose. It compensates for the loss of cover.
How to roll it out
- Post the bracket on the kiosk (timing.ma does this automatically).
- Run it in "warning mode" for one full month: show the late minutes in the punch confirmation but don't deduct. People self-correct.
- Start deducting in month two. Most teams see 60–80% of avoidable lateness disappear in the warning month alone.
timing.ma ships with this exact bracket as the default for the Moroccan market. You can edit them per-tenant in Settings → Lateness.