here is my read function
//reads 16 bit number from bus + error byte (not used)
uint16_t MLX90614::i2cRead(uint8_t reg){
uint16_t ret;
Wire.beginTransmission(_i2cAddr); // start transmission to device
Wire.write(reg); // sends register address to read from
Wire.endTransmission(false); // end transmission
Wire.requestFrom(_i2cAddr, (uint8_t)3);// send data n-bytes read
ret = Wire.read(); // receive DATA
ret |= Wire.read() << 8; // receive DATA
//error
uint8_t pec = Wire.read();
Wire.endTransmission(true); // end transmission
return ret;
}