VTI SCP1000 Pressure and Temperature Sensor

Hi,

I'm a bit of a n00b with Arduinos, SPI and this device in general, but I've started to get data out of it. I'm getting some weird results from the temperature reading though. It's connected to an Ardunio Skinny (Sparkfun). This is the output I'm getting (note the starting temperature):

SCP1000 Code v0.02
STATUS [110]   OPSTATUS [1]   TEMPOUT [1111111110110101]   temp: [815]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1111111110110101]   temp: [815]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1111111110110101]   temp: [815]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1111111110110100]   temp: [815]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1111111110110101]   temp: [815]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1111111110110101]   temp: [815]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1111111111000101]   temp: [816]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1111111111011001]   temp: [817]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1111111111101110]   temp: [818]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1111111111111100]   temp: [819]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000001011]   temp: [26]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1000010011]   temp: [26]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000011101]   temp: [27]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1000100100]   temp: [27]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1000101101]   temp: [27]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000110000]   temp: [28]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1000110101]   temp: [28]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000111010]   temp: [28]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000111111]   temp: [28]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1001000001]   temp: [28]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1001000001]   temp: [28]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1001000101]   temp: [29]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1001000110]   temp: [29]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1001000111]   temp: [29]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1001000011]   temp: [28]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1000111111]   temp: [28]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1000111000]   temp: [28]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000110111]   temp: [28]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000110000]   temp: [28]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1000101110]   temp: [27]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1000100010]   temp: [27]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000011110]   temp: [27]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1000011011]   temp: [26]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000011000]   temp: [26]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000001110]   temp: [26]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000000111]   temp: [25]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1000000001]   temp: [25]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000000010]   temp: [25]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1000000000]   temp: [25]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1000000001]   temp: [25]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1111111111111111]   temp: [819]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1111111111111111]   temp: [819]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1111111111111111]   temp: [819]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1111111111111111]   temp: [819]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1111111111111101]   temp: [819]
STATUS [111110]   OPSTATUS [1]   TEMPOUT [1111111111111101]   temp: [819]
STATUS [110110]   OPSTATUS [1]   TEMPOUT [1111111111111100]   temp: [819]

And this is the code that's displaying the above and converting the data to a decimal temperature.

void loop()
{
  debug=0;
  in_byte = read_register(STATUS);
  Serial.print("STATUS [");
  Serial.print(in_byte, BIN);
  Serial.print("]   ");
  in_byte = read_register(OPSTATUS);
  Serial.print("OPSTATUS [");
  Serial.print(in_byte, HEX);
  Serial.print("]   ");
  in_word = read_register16(TEMPOUT);
  Serial.print("TEMPOUT [");
  Serial.print(in_word, BIN);
  Serial.print("]   ");
  temp = in_word & 0x3fff;
  temp = temp / 20;
  Serial.print("temp: [");
  Serial.print(temp, DEC);  Serial.println("]");
  delay(700); 
}

Any ideas what I'm doing wrong? The temperatures from 26C up to 29C and back down to 25C appear correct (I held the sensor in my hand and then let go). I've tried declaring temp as uint16_t and int16_t.