n00b SPI problem

Just as an update, I have it working now!

Here's the code I needed to do to make it work:

pressure_lsb = read_register16(PRESSURE_LSB);
pressure_lsb &= 0x0000FFFF;

Does this make any sense at all?

My read_register16 function looks thus:

float read_register16(char register_name)
{
    byte in_byte1;
    byte in_byte2;
    float in_word;
    
    register_name <<= 2;
    register_name &= B11111100; //Read command

    digitalWrite(SLAVESELECT,LOW); //Select SPI Device
    spi_transfer(register_name); //Write byte to device
    in_byte1 = spi_transfer(0x00);    
    in_byte2 = spi_transfer(0x00);
    digitalWrite(SLAVESELECT,HIGH);
    in_word = UBLB(in_byte1,in_byte2);
    return(in_word);
}

Could this be because of the cast from float to unsigned long? I'm using Arduino 0013, did the types change between then and now?