I just tested this with the latest builds of Espruino for Puck.js and it's totally fine, producing negative values.
Perhaps the problem is you're sending the data as one byte in an advertising packet, and then you're not decoding negative values properly at the receiving end?
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
I just tested this with the latest builds of Espruino for Puck.js and it's totally fine, producing negative values.
Perhaps the problem is you're sending the data as one byte in an advertising packet, and then you're not decoding negative values properly at the receiving end?