Atmel SPI Serial EEPROM Writing Error - Page Write?
This device has Page Write functionality. Pages are 32 bytes in size and fixed in address starting from 0. As pointed out by @kkrambo

0-31
32-63
... etc

If writing a sequence of bytes across a page boundary, we need to break up the bytes into two parts at the point where one page ends and another begins.

Here's some sample code if a sequence spans across two pages(multiple pages are not addressed here): 

public void WriteBytesPageSpan(ushort startAddress, byte[] byteBuffer)
        {
            ushort spanAddress = AddressSpansPage(startAddress, byteBuffer.Length);
            if (spanAddress != 0)
            {   
                //perform write on first half
                byte[] splitBuffer= new byte[spanAddress-startAddress];
                Array.Copy(byteBuffer, 0, splitBuffer, 0, spanAddress - startAddress);
                WriteBytes(startAddress, splitBuffer);

                //perform write on second half
                ushort endAddress = (ushort)((startAddress + byteBuffer.Length) - 1);
                splitBuffer = new byte[(endAddress - spanAddress) + 1];
                Array.Copy(byteBuffer, spanAddress-startAddress, splitBuffer, 0, splitBuffer.Length);
                WriteBytes(spanAddress, splitBuffer);
            }

            else WriteBytes(startAddress, byteBuffer);
        }