In several years of developing, I've never had this issue brought up by anyone. But, I have this client that is insisting that they shouldn't have to pay for any time spent on fixing bugs during the course of developing a product.

With every other client, it is generally understood that there will be some bugs to work out at the end of the development phase and that that work is considered part of the scope.

So, my question is, where do you draw the line?

Say you have an agreement in place that establishes that you are charging by the hour. You develop, test and send an application to a client. They write back, pointing out a few bugs that you missed or where not apparent due to the application not working in a new server environment. These bugs take a few days to fix and test. Do you invoice the first time you deliver what you think is "bug free" and then do all bug fixing for free? Or, do you wait until the client has "signed off" that it's working as expected and charge for all the time spent?

That's just part of the process of finishing a project, right? Or am I crazy?