There is a great article in today's NY Times about travel tipping - and bargaining - that makes so much sense. The cliff notes version:
If you bargain someone down, buy more so your total purchase equals his (or her) opening bid. So if they start at 100 whoopies for a thingybob, you'll probably end up with two or three thingiemabobs for 100 whoopies - the vendor makes a decent sale; you end up with more gifts to take home.
Buy local stuff - you will be supporting the local economy and will have unique relevant things to take home.
Buy more. Happier neighbors (more gifts), happier sellers (more sales). Healthier local economy.
It all makes so much sense, and takes the over/under guilt out of the equation.
I would add my own: Know a bit about the country before you go. Some countries have a tradition of alms to the needy; in some places (like Cambodia) if the kids are successful at begging they're kept out of school - the family needs the money. If you know a bit about the country you'll feel more comfortable about the unintended consequences of your donation or purchase. And if you learn a bit about the country's crafts you'll know you're buying local (good idea) not something else that's made in China.
We have so much, and such a little from us can make a huge difference in someone's life.
Food for thought.