shift + 64 >> 8
Why do you add 64 if you shift it to the right 8 bits? The 64 doesn't do anything.
Due_unto:
Possibly part of the problem might be that you are sending an integer to a library function that is expecting a byte, which cannot be over 255. I don't know if the function truncates the integer down to a byte or if it just starts using the most significant part of the integer since you specified MSBFIRST.
He shifts his most significant byte 8 bits to the right, so that shouldn't be a problem. ShiftOut will just use the 8 least significant bits to send.