I'm pretty sure that two complements negative values give incorrect results here.