Agreed. If it is an estimate and I go over, a lot, I better be able to justify it. If I estimate and go over on job after job - it is a problem with my estimating.
I do much the same as dwarfthrower does. I do time and materials for a rate and simply work until completion at that rate.
If they want a fixed bid - I am assuming a greater risk. I do a couple things to mitigate that risk.
First, I use my highest rate (no discounts) in my calculation.
Second, I make sure that I have identified appropriate assumptions (things that are assumed on my part and on the client's part - availability, properly configured systems (outside of my control), space and access as necessary, timely response to questions by both parties, etc. Any unmet assumptions can lead to additional billing - ie: If something does not work and it is discovered a server was mis-configured (again, not my work).
Third, I make sure a clear statement of success is defined. I am getting paid for x.
Fourth, I estimate best case and worst case scenario - then I base my calculation on 80% of worst case scenario.
When doing fixed bid, you are undertaking a risk. As such I work to mitigate the risk and maximize the reward. I love that type of project - particularly for higher-value, productivity enhancing tools. They want the fixed bid and if I can get it done A.S.A.P. to the success definition and boost my rate by double or triple, good for me and good for them.
That's my methodology for that.
Of course, you asked a question which I didn't answer - but I think you have probably found your answer above.
If it is an estimate but you are being paid for Time and Materials, bill for your time.
Matthew Moran (career blog and podcast below)
Career Advice with Attitude for the IT Pro