The guild member limit is a Blizzard thing; the guild roster only returns up to 500 people, although you can keep inviting people to the guild.
This means the addon can only see some of the members in the guild, and therefore the decay only affects part of the guild also.
Where did you get that? My calls work reliably for 671 guild members.
I use this code in one of Chaos' custom addons:
SetGuildRosterShowOffline(true) -- include offline guildies
GuildRoster()
self.db.profile.lastGuildRosterUpdate = time()
self.db.profile.guildRosterInfoCache = {}
for i=1, GetNumGuildMembers() do
local name, rank, rankIndex, level, class, zone = GetGuildRosterInfo(i);
self.db.profile.guildRosterInfoCache[name] = {
name = name,
rank = rank,
rankIndex = rankIndex,
level = level,
class = class,
zone = zone
}
end
I used this code to spam the guild roster query
function gr_doIt()
SetGuildRosterShowOffline(true)
GuildRoster()
for i=1, GetNumGuildMembers() do
local name, rank, rankIndex, level, class, zone = GetGuildRosterInfo(i);
idxString = string.format("%-5s", i )
idxString = string.gsub(idxString, ' ', '0')
DEFAULT_CHAT_FRAME:AddMessage(idxString.." "..name)
end
end