In WriteMultipleRegistersRequest.readData(), the target address is read as a short:

public void readData(DataInput din)
    throws IOException {
    m_Reference = din.readShort();
...

Where it should be using din.readUnsignedShort() (which every other request does). When using j2mod to implement a Modbus Slave, this renders the upper half of the address space unreachable.

This bug is also present in Jamod, and filed as patch 6