I've been away on holiday, so I'm a little late to this interesting thread.

Firstly I'd have to say that KiXtart's handling of "0" as being true is correct in context. An expression which is a zero length string is false, one which is not a zero length string is true.

quote:
NOT "0" is an expression that starts with a numeric operation (a mathmatical logic operation actually), therefore, the result of the expression will be numeric, therefore the strings inside should be converted to numeric if possible (like in 2+"2"), thats my argument.
No - not true, and perhaps the source of the confusion.
NOT is unary operator whose result and action is "logical" or boolean - it is quite explicitly not numeric.

If you check the KiXtart manual for operators you will find two listings. One is for numeric operators and the other is for "conditional and logical" operators which are valid for numeric and string expressions.

If you specifically want to check the truth of the numeric value of the expression rather than the truth of the expression you should quite rightly expect to have to explicitly cast/coerce the value:
code:
Not Val("0")

The difference with VBS is interesting. Does the VBS NOT operator only take numeric operands? If so there may be an implied cast to numeric.