dca: fix signed overflow in shift