                 
                 home.objectFounds = home.objectFounds.concat(objectFounds);
                 
-                if ( home.objectFounds.length == 0 )
+                if ( home.objectFounds.length == 0 || objectFoundsAlreadyTargetted(home) )
                 {
                     // Move randomly
                     do {

            
        public function tick(villager:VillagerVO, mapModel:IMapModel, home:HomeVO):IntPoint
        {
            if ( villager.status == CVillagerStatus.IDLE )
            {
                var newPoint:IntPoint;
                
                var objectFounds:Vector.<MapNodeVO> = new Vector.<MapNodeVO>();
                
                // Check sight area
                for (var i:int = 0, count:int = sightOffset.length; i < count; i++)
                {

                    // Go to object
                    i = 0;
                    do {
                        while (isOtherVillagerGoingTo(home, home.objectFounds[i].pos))
                        {
                            i++;
                        }
                        if (i >= home.objectFounds.length - 1) break;
                        var path:Vector.<IntPoint> = mapModel.getPath(villager.position, home.objectFounds[i].pos);
                        i++;
                    } while (path == null && i < home.objectFounds.length)
