Being late is irresponsible... it costs OTHER people's time... likesay if you have 3 on time people waiting to head out and someone else is fifteen minutes late, that's man hour of production time lost. People act like being late is no big deal but it's a very big deal when other people's time is wasted by it.
Discipline is best when it's straightforward. Do it like disciplining a kid.
-First offense gets a warning and the consequences for a second offense are clearly communicated.
-Second offense? Time for those consequences and another warning/consequence.
-You can keep repeating the cycle or ultimately make the consequence termination.
The key is, clear warnings, clear consequences, NO PASSES. If you say you're going to dock them or whatever and they're late yet again, you HAVE to follow through... every single time.
I'm not a fan of docking pay. Once the employee has earned the money, they should be paid... but you can reduce their pay rate for a period of time... similar to grounding a dangerous climber. Sometimes it's good to have them lay out their own consequences... people tend to be harsh on themselves... it's something they'll remember.