avoid overflows on signed integers