use 'svalue' that is actually a signed integer, as otherwise cmp with 0 is always...