Баги бывают разные. Если это ты накосячил, то само собой надо править безплатно, это ж твои косяки. Учись не косячить. Если давать гарантию на свои проекты полгода. то заказчик будет спокоен и доволен. Как показывает опыт, все баги вылезают в пределах первого месяца после начала эксплуатации. Полгода - это чистый маркетинг. Но иногда очень редко тоже пришлют какой баг. В убытках не будешь.
Если были двоякие толкования в ТЗ, то надо на будущее все заранее детально обсуждать и такие вещи исключать. Часто под видом бага заказчик пытается протащить изменение существующего функционала, в таких случаях помогает документация, где четко все описано. Тогда это доп. затраты на переделку.
По ценообразованию - в цену надо закладывать не только разработку, но и тестирование. Тогда все будет как надо.
По четким задачам, когда ясно что делать и сколько времени займет, можно давать прайс за всю задачу.
А когда "давайте сделаем что-нибудь", то почасовую оплату.
Вот как-то так.