The frist one is great, thanks. I forgot that one...
About the second one, it does allow negatives, but it also disables sutraction. if you type '3-2' the subtraction sign isn't evaluated, and is seen as part of the number. If you try this calculation it still works, because this 'number' is calculated with eval(). However, this is not the correct way to do it, because it doesn't take presedence into account...
It can be fixed by checking, when the Token is '-', if there is a operator in front of it. If true, it is a negation sign, else it is a subtraction operator...
When I have the time, I'll try to fix it