Xbee packets giving Incorrect values
If you complain about negative numbers, then you are not correctly accounting for signed versus unsigned arithmetic. Make sure you convert all values to unsigned int, and print them out as unsigned int, to cover the entire 16-bit range.

unsigned int x = (unsigned int)lsb + (unsigned int)msb * 256;
printf("%u\n", x);


There's a few other troubleshooting tips here, too, like "are you sure these are the right offsets," and "are you sure you have the byte order correct," but let's start with the first thing that's wrong in your post, first!