Not sure which command your referencing, for the VGAC it is an unsigned number, however it splits ranges at code 128 (low amplification mode vs high amplification mode), so 0-127 is low amplification mode, 128-255 is high amplification mode.

I went into more detail a few pages back in this thread,

I figured out!

But the story is somewhat confusing. The quote:

`If the decimal is greater than 127, it should minus 255.Then the value is code value. Such as the wave data is ―FC‖ convert to decimal is 252. So the code value is 252-255 = -3.`

comes from the documentation of the WAVEFORM? | WF? command.

I implemented this treating the rawvalues as a signed 8 bit integer. But that would be -256. So not the documented way. For a moment I thought I screwed up.

The problem is, that I convert this at two places, and in the averaging part I was still using the suggested (documented) way, which brings every value 1 step up above 127 (thus below 0) compared to the other method.

I have the strong suspicion that the documentation is wrong. It should say:

`If the decimal is greater than 127, it should minus 256. Then the value is code value. Such as the wave data is ―FC‖ convert to decimal is 252. So the code value is 252-256 = -4.`

Which is treating them as signed 8 bit values. Without having two ways of ending up with a resulting 0.

Also this solves the strange glitch around the value of 0.