Atmel 24C256 showing up at wrong I2C address

I basically copied those functions from Arduino Playground - I2CEEPROM and changed here and there to make it work somehow, but nothing writes to the memory.

This is how the code is currently standing:

uint8_t i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data ) {
    Wire.beginTransmission(deviceaddress);
    Wire.write((byte)(eeaddress >> 8)); // MSB
    Wire.write((byte)(eeaddress & 0xFF)); // LSB
    Wire.write(data);
    return Wire.endTransmission();
}

  
byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress ) {
    byte rdata = 0xFF;
    Wire.beginTransmission(deviceaddress);
    Wire.write((byte)(eeaddress >> 8)); // MSB
    Wire.write((byte)(eeaddress & 0xFF)); // LSB
    Wire.endTransmission();
    delay(25);
    Wire.requestFrom(deviceaddress,1);
    if (Wire.available()) rdata = Wire.read();
	Wire.endTransmission();
    return rdata;
}