Cool I'll start adjusting the shiftout first and use that with the original code and as soon as thats working then ill try to implement some math to it.
Although it surprised me that the difference between shifting out the first and second byte is only a space.
shiftOut(dataPin, clock, MSBFIRST, (data >> 8));
shiftOut(data, clock, MSBFIRST, (data>>8));