First, to some extent there will be vagueness no matter what you do. I give the customer the benefit of the doubt on vagueness issues. Also there are times when surprises come up on their side and I will often (though not always) give the benefit of the doubt there if the work is reasonable.
For example, I had a customer pay me to write a fixed asset system on a fixed bid. We agreed that the basis would be actual days, straightlined per year. But when we got it done, it gave them numbers they didn't expect because contrary to their understanding, their current system was depreciating on a 30/360 basis (equal months). I did rewrite the calculations to match their existing system free of charge though I would have been justified charging them extra for it. The customer had always been very prompt in payment and otherwise a delight to work with so I cut them slack on this one.
However, when a customer changes specs partway through, the approach you need to take is to write back a nice friendly letter noting that this is a significant change in the agreement and you will get back to them within a day or so with an adjusted price. Then send them back a bid for the additional work.