diff -r 0a52c1dd9400 -r 2fd51591b260 hedgewars/uGearsHandlersMess.pas --- a/hedgewars/uGearsHandlersMess.pas Fri Oct 11 13:06:04 2013 -0400 +++ b/hedgewars/uGearsHandlersMess.pas Sun Oct 13 13:14:32 2013 -0400 @@ -280,11 +280,17 @@ var isFalling: boolean; //tmp: QWord; - tdX, tdY: hwFloat; + tX, tdX, tdY: hwFloat; collV, collH: LongInt; land: word; begin - WorldWrap(Gear); + tX:= Gear^.X; + if WorldWrap(Gear) and (WorldEdge = weWrap) and (Gear^.AdvBounce <> 0) and + (TestCollisionXwithGear(Gear, 1) or TestCollisionXwithGear(Gear, -1)) then + begin + Gear^.X:= tX; + Gear^.dX.isNegative:= (hwRound(tX) > leftX+Gear^.Radius*2) + end; // clip velocity at 2 - over 1 per pixel, but really shouldn't cause many actual problems. if Gear^.dX.Round > 2 then