works with signed numbers.