Why is my Region3Int16 bigger than the values specified

local region = Region3int16.new(Vector3int16.new(0, 0, -3), Vector3int16.new(4, 4, 4))

I get it expands to grid but if so is there a function I can use to get the correct bounds

What do you expect to happen, and what is actually happening? Nothing looks wrong based on your picture.

I want the actual bounds of the region3, the one in the picture