anchor.diff:          // Position
           Position := Squad.Position;
           gRenderAux.CircleOnTerrain(Position.X, Position.Y, 1, 0, $99000000 OR COLOR_GREEN);
  -        // Target house
  -        if (Squad.TargetHouse <> nil) then
  -          if not Squad.TargetHouse.IsDestroyed then
  +
  +        // Target unit
  +        if (Squad.TargetUnit <> nil) then
  +        begin
  +          if not Squad.TargetUnit.IsDeadOrDying then
             begin
  -            gRenderAux.LineOnTerrain(Position, Squad.TargetHouse.GetPosition, $99000000 OR COLOR_RED);
  +            gRenderAux.LineOnTerrain(Position, Squad.TargetUnit.GetPosition, $99000000 OR COLOR_RED);
               if (Length(Squad.PointPath) > 0) then
                 for J := Length(Squad.PointPath)-2 downto 0 do
                   gRenderAux.LineOnTerrain(Squad.PointPath[J+1], Squad.PointPath[J], $60000000 OR COLOR_BLUE);
             end;
  -        // Target unit
  -        if (Squad.TargetUnit <> nil) then
  -          if not Squad.TargetUnit.IsDeadOrDying then
  +        end
  +        // Target house
  +        else if (Squad.TargetHouse <> nil) then
  +          if not Squad.TargetHouse.IsDestroyed then
             begin
  -            gRenderAux.LineOnTerrain(Position, Squad.TargetUnit.GetPosition, $99000000 OR COLOR_RED);
  +            gRenderAux.LineOnTerrain(Position, Squad.TargetHouse.GetPosition, $99000000 OR COLOR_RED);
               if (Length(Squad.PointPath) > 0) then
                 for J := Length(Squad.PointPath)-2 downto 0 do
                   gRenderAux.LineOnTerrain(Squad.PointPath[J+1], Squad.PointPath[J], $60000000 OR COLOR_BLUE);
  
positive.code:   Result := False;
    fOnPlace := False;
    // Time limit (time limit MUST be always set by higher rank (platoon))
    if (fTimeLimit < gGame.GameTickCount)
      // Target point is reached
      OR (KMDistanceSqr(aActualPosition, aTargetPosition) < SQR_TARGET_REACHED_TOLERANCE)
      // Archers should start fire as soon as possible
  
negative.code:         Squad.TargetUnit := UA[ fTargetU[TargetIdx].Index ];
          Output := True;
          fTargetU[TargetIdx].DistantThreat := fTargetU[TargetIdx].DistantThreat - Squad.Group.Count;
          // Unit will be targeted by Ranged group -> if there was minimal priority for close combat then remove it
          if (fTargetU[TargetIdx].CloseThreat = 1) then
            fTargetU[TargetIdx].CloseThreat := 0;
          Dec(AvaiableSquads[GT].Count);
          AvaiableSquads[GT].Squads[I] := AvaiableSquads[GT].Squads[ AvaiableSquads[GT].Count ];
        end
  