localToGlobal: Please explain

In the Flash CS3 help, an example is used to explain how localToGlobal works. I’m confused about localToGlobal, so I decided to try to start understanding it by running the example’s exact code. I’ll restate the example here:


import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Point;
 
var square:Sprite = new Sprite();
square.graphics.beginFill(0xFFCC00);
square.graphics.drawRect(0, 0, 100, 100);
square.x = 100;
square.y = 200;
 
addChild(square);
 
square.addEventListener(MouseEvent.CLICK, traceCoordinates)
 
function traceCoordinates(event:MouseEvent):void {
    var clickPoint:Point = new Point(square.mouseX, square.mouseY);
    trace("display object coordinates:", clickPoint);
    trace("stage coordinates:", square.localToGlobal(clickPoint));
}
 

The trace makes it pretty obvious how the method works, but I’m confused about the result of the method. Here’s the trace after clicking the square twice:

[FONT=Courier New]display object coordinates: (x=42, y=81)[/FONT]
[FONT=Courier New]stage coordinates: (x=142, y=281)[/FONT]
[FONT=Courier New]display object coordinates: (x=41, y=50)[/FONT]
[FONT=Courier New]stage coordinates: (x=141, y=250)[/FONT]

I understand that the stage coordinates are simply the display object’s local coordinates with square.x and square.y added to them. But the original display object’s local coordinates, rather than being (0, 0) as I thought they should be, not only appear to be very nonzero, but also CHANGE AT RANDOM??? every time you invoke the sprite’s event listener!!

Please explain. Thanks!