As a startup founder, director, and CTO (not all at the same time, mind you) I would frequently send developers home if they weren't being productive... even if they were only there for 4 or 5 hours. Sometimes you hit a wall and no amount of staring at that screen is going to help. Why would I want to pay you to sit there and do nothing when I could send you home and you come back tomorrow refreshed and ready to tackle the problem? I rarely let anyone work more than 10 or 11 hours because my experience taught me that the quality of what is produced is *drastically* reduced during those death marches. Again... sure a team may roll out a dozen new features over an 18 hour day but how many bugs will that produce? More importantly, how demotivated will they be the next day on 3 hours of sleep? It's a vicious cycle that I never allow my teams to enter. It's all about the bottom line and to me inching a race forward is no good unless you meet the finish line.
That being said, a developer who has to be sent home after 5 or 6 hours every day is completely worthless to me. You are either on-board or you are not. I don't care how or when you work as long as you produce product that is exceptional. A rule that I had at my first CTO gig was as follows: "I don't care if I ever see you in the office. If you miss a deadline without giving me sufficient advance warning I will fire you. You were hired because you are smart and a quality coder. I shouldn't have to babysit you." Works well if you have a driven team.