I2C problem wire.available returns 0

Hello, I'm using an ITG3200 sparkfun breakout board gyroscope. I have the problem that after a variable number of wire commando's my wire.available returns 0. Mostly the number of commando's is not more than 1000. what can cause this?

part of the library i'm using, it get's stuck in the while statement

byte ITG3200::read(byte reg) {
  Wire.beginTransmission(_gyro_address);
  Wire.send(reg);
  Wire.endTransmission();
  Wire.beginTransmission(_gyro_address);
  Wire.requestFrom(_gyro_address, 1);
  while (Wire.available() == 0) {
  }; // block unil data is available
  byte buf = Wire.receive();
  Wire.endTransmission();
  return buf;
}

The weird thing is that it first returns data and then stops and then sometimes it works for a really long time(like 2 hrs or more)

Sounds to me like some resource gets exhausted. Please post whole code ..

Note that the RequestFrom should not be encapsulated by the beginTransmission - endTransmission. Could cause a handshake corruption. - http://arduino.cc/en/Reference/WireRequestFrom - http://www.arduino.cc/en/Tutorial/MasterReader.