I've used gcur. One improvement it needs, which you could implement into your program, is an auto-update. On start-up of the program would be good, but the best scenario would be an auto-update that doesn't require the application to be running. The other day I needed to convert $US to $Canadian, I plugged in the numbers, than realized the exchange rate was last update a month prior because I hadn't run the program since then.