@red51: Something strange seems to happen when converting between Chunk+Block coordinates and Global coordinates when Global is negative.
(Chunk -1, block 0) converts into global position -16 (using ChunkUtils.getGlobalPosition())
Global position -16 converts into (Chunk -2, block 15) (using ChunkUtils.getChunkAndBlockPosition()) which is 1 block off.
This also happens when creating Areas with the Area(Vector3f globalStartPosition, Vector3f globalEndPosition) constructor: the chunk and block start/end positions of the resulting Area are off by one block if any global position is negative.
This is a small plug-in which tests these methods.