If you look at classes/User_group.php on line 412 in the current code, you can see that a call to $profile->getGroups() is made. This implies getGroups($offset=0, $limit=PROFILES_PER_PAGE) only giving a limited amount of groups.
This means only the first 20 groups in an ascending numerical order by locally stored User_group->id will be addressable with the bangtag syntax.
I solved this by making the getGroups() call to the same one made in Profile->isMember(), i.e. $profile->getGroups(0, null);
// Are there any matching remote groups this profile's in?
if ($profile) {
- $group = $profile->getGroups();
+ $group = $profile->getGroups(0, null);
while ($group->fetch()) {
if ($group->nickname == $nickname) {
// @fixme is this the best way?