I was one of those "always late" people when I was working for the blue big box hardware store. For most of my jobs, it was a combination of low morale and high tolerance for absenteeism that made me come in late all the time. I didn't wake up on time when morale was very low (I'm not a psychiatrist, but maybe it's a subconscious thing, like not hearing the alarm, accidentally resetting it when you first wake up and not remembering doing it, etc.)

I also agree that I had a problem. What was worse is there was no policy on being late, other than 2+ hours late meant an absence. Unfortunately for me and the store, i was stuck there until a series of unfortunate events (a.k.a. I'm a crybaby) led me to just quit, not even call in and tell them that I quit. Mainly, school and work were getting the best of me.

I have a new job with a pretty set schedule. Where my old job was opening meant be there at 5AM, closing meant be there at 3PM, my new job's open/close shifts are only 90 minutes apart. Plus, the morale is alot better. Suddenly, I find myself waking up on time every day (except twice, when I forgot to set my alarm, and even then I was only 30 minutes late at the most).

Every person is different, I agree. However, having a high tolerance for lates will eventually cause a pattern. Poor morale can be a factor. In my case, it was justified, as we had to battle cut hours, unbearable workloads, and sub human treatment. However, many cases of low morale stem from an employee's personal or professional problems, not the company's. But, an employee is not only responsible for showing up on time, but KNOWING whether or not they can or can't, and TAKING the appropriate action (i.e. find a new job, try to work a different schedule, etc.)

If I was in my boss's position at the big box store, I would have fired myself. Instead of trying to work something out that I knew I couldn't, I should have looked for a new job alot sooner.