I just got here, but I see something off the top of my head.
You are using sendbytes.
Is there a sendUnsignedBytes block you could use instead?
(Apparently not - ABG)
P.S. There is a nice Do It debugging facility that you can use in the Blocks Editor to see values of blocks at run time. The SendUnsignedBytes block expects a list of decimal values 0-255 each.
You would be surprised to see some of those conversion results.
For example AI2's idea of binary is a text string of 1's and 0's, nice for educational purposes but not good for sending encoded data.
P.P.S. Considering the input ranges (-1000,1000) this will require some bit-diddling to force negative numbers into 16 bits.