I think I've discovered part of the problem, in that I'm using word rather than bytes.

The manual states:
To write a word, each of the 2 bytes that make up the word must be
written separately:
w Var Word
WRITE 0,w.BYTE0
WRITE 1,w.BYTE1
I'm a little stumped as to how I need to write and read back a mixture of byte and word, the values which are words are typically represented as three digit numbers eg: 567 thus represents 56.7 degrees, so the alarmhigh(fn) will all be three digit numbers