anchor.diff:      if (TargetGroup = nil) then
       begin
         if not aAimCivilians then
  -        Exit;
  -      aTargetUnit := gHands.GetClosestUnit(aInitPosition, fOwner, at_Enemy);
  -      if (aTargetUnit = nil) then
  -        Exit;
  +      begin
  +        aTargetHouse := gHands.GetClosestHouse(aInitPosition, fOwner, at_Enemy, ALL_HOUSES, True);
  +        if (aTargetHouse <> nil) then
  +          fCompanyMode := cm_Destruction;
  +      end
  +      else
  +      begin
  +        aTargetUnit := gHands.GetClosestUnit(aInitPosition, fOwner, at_Enemy);
  +        if (aTargetUnit = nil) then
  +          Exit;
  +      end;
       end
       else
         aTargetUnit := TargetGroup.GetAliveMember;
  
positive.code:   TARGET_HOUSES: THouseTypeSet = [htBarracks, htStore, htSchool];
    // Houses in SCAN_HOUSES will be destroyed when they are in radius (it should also contain TARGET_HOUSES)
    SCAN_HOUSES: THouseTypeSet = [htWatchTower, htBarracks, htStore, htSchool];
  
  implementation
  uses
  
negative.code:       for I := 0 to fSquads[GT].Count - 1 do
        begin
          Squad := fSquads[GT].Items[I];
          if not Squad.InFight
            AND ((fCompanyMode <> cm_Destruction) OR (Squad.TargetHouse = nil)) then
          begin
            // Make sure that unit will not hunt target over the whole map and better stay inside company
            if (GT <> gt_Ranged) then // ranged units are fixed in Squad class (set / reset target cause that they dont shoot)
  