what have you tried ?
in what way does it not provide a correct result?

signed divides, multiplies and shifts need proper handling of the sign bit
otherwise as long as the vars match in type signed integer math works as expected