Compensation works properly when you climb mill.
You are prob missing the tool diameter or radius designation code in your program (D=whatever) but that depends on your controller.
G00 G90 X3.0469 Y2.9063 (center point of square?)
T21
M07
G1 G41 G91 X3. F100. D21
Y3.
X-6.
Y-6.
X6.
Y3.
G1 G40 X-3
M08
M30
... run a test first I wrote this in 10sec so its possibly needs re-work (usually i go off absolute and sub-routine it incrementally)