Index: bp-members/bp-members-functions.php
===================================================================
--- bp-members/bp-members-functions.php	(revision 7646)
+++ bp-members/bp-members-functions.php	(working copy)
@@ -512,7 +512,7 @@
 	if ( !$count = get_transient( 'bp_active_member_count' ) ) {
 		// Avoid a costly join by splitting the lookup
 		if ( is_multisite() ) {
-			$sql = "SELECT ID FROM {$wpdb->users} WHERE (user_status != 0 OR deleted != 0 OR user_status != 0)";
+			$sql = "SELECT ID FROM {$wpdb->users} WHERE (spam != 0 OR deleted != 0 OR user_status != 0)";
 		} else {
 			$sql = "SELECT ID FROM {$wpdb->users} WHERE user_status != 0";
 		}
@@ -585,9 +585,6 @@
 			update_user_status( $user_id, 'spam', $is_spam );
 		}
 
-		// Always set single site status
-		$wpdb->update( $wpdb->users, array( 'user_status' => $is_spam ), array( 'ID' => $user_id ) );
-
 		// Call multisite actions in single site mode for good measure
 		if ( !is_multisite() ) {
 			$wp_action = ( true === $is_spam ) ? 'make_spam_user' : 'make_ham_user';
@@ -595,6 +592,13 @@
 		}
 	}
 
+	/**
+	 * Must be run in Administration screen and front end to be sure if the Admin switch
+	 * config user_status == spam when spaming from WordPress Network Admin users and
+	 * BuddyPress user's profile capabilities 
+	 */
+	$wpdb->update( $wpdb->users, array( 'user_status' => $is_spam ), array( 'ID' => $user_id ) );
+
 	// Hide this user's activity
 	if ( ( true === $is_spam ) && bp_is_active( 'activity' ) ) {
 		bp_activity_hide_user_activity( $user_id );
