Converting unsigned to signed

Did you read the code? That's not what he's doing at all.

The code he has is perfectly fine apart from one small point, which I have mentioned extensively above

short phi_data = 0;   // <<<<<<  USE SHORT, NOT INT, ON A 32 BIT SYSTEM TO FORCE 16 BITS

phi_data = ((data[0] << 8) | data[1]);//Concatenate two bytes, comprising one signed integer value