                 
                 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++)
                {

                if (villager.destination)
                {
                    var destPoint:IntPoint = villager.destination.path[0];
                    objectType = mapModel.map[destPoint.y][destPoint.x].objectType;
                    if (objectType == CMapNodeType.OBJECT_NULL || objectType == CMapNodeType.OBJECT_HOME)
                    {
                        villager.destination = null;
                    }
                    else
                    {
                        newPoint = villager.destination.path[villager.destination.currentEntry++];
                    }
                }
            }
            
            return newPoint;
        }
        
        private function objectFoundsAlreadyTargetted(home:HomeVO):Boolean
        {
            for each (var objectFound:MapNodeVO in home.objectFounds)
            {
                if (!isOtherVillagerGoingTo(home, objectFound.pos)) return false;
            }
            return true;
        }
        
        private function isOtherVillagerGoingTo(home:HomeVO, pos:IntPoint):Boolean
        {
            for each (var villager:VillagerVO in home.villagers)
            {
                if (villager.destination == null) continue;
                
                if (villager.destination.path[villager.destination.path.length - 1] == pos)
                {
                    return true;
                }
            }
            return false;
        }
    }

}