sto facendo i conti a mente e scrivendo dal telefonino.
Questa funziona?
codice:
int myZero = 65454;
int read = 40000;

int real = ((read - myZero) & 0xFFFF) - 1;
real = (real > 32767 ? real - 65535 : real);
myZero è il tuo valore zero (come da strumento)
read è il valore letto.