Why would it not work for negative values ? They just have their MSB to 1.