I'm never late and I don't tolerate people who are chronically late.
I let them choose the time to report to work, anytime between 6 and 10 AM. All they have to do is be dependable. They learn pretty quick - if they are late 3+ times in a month, I tell them I am moving their start time a half-hour, say from 8 to 8:30, so they can once again be on time every day. Can't make it every day at 8? Then you can make it every day by 8:30 - just leave for work the same time you do now, even though sometimes you'll be early.
Eventually, even the most chronically late people decide to come in on time so they don't end up working from 10-6:30.