Index: bp-themes/bp-default/members/members-loop.php
===================================================================
--- bp-themes/bp-default/members/members-loop.php	(revision 3275)
+++ bp-themes/bp-default/members/members-loop.php	(working copy)
@@ -2,7 +2,7 @@
 
 <?php do_action( 'bp_before_members_loop' ) ?>
 
-<?php if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) : ?>
+<?php if ( bp_has_members( 'exclude=1&' . bp_ajax_querystring( 'members' ) ) ) : ?>
 
 	<div class="pagination">
 
Index: bp-core/bp-core-templatetags.php
===================================================================
--- bp-core/bp-core-templatetags.php	(revision 3275)
+++ bp-core/bp-core-templatetags.php	(working copy)
@@ -17,7 +17,7 @@
 	var $pag_links;
 	var $total_member_count;
 
-	function bp_core_members_template( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras ) {
+	function bp_core_members_template( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude ) {
 		global $bp;
 
 		$this->pag_page = isset( $_REQUEST['upage'] ) ? intval( $_REQUEST['upage'] ) : $page_number;
@@ -25,11 +25,11 @@
 		$this->type     = $type;
 
 		if ( isset( $_REQUEST['letter'] ) && '' != $_REQUEST['letter'] )
-			$this->members = BP_Core_User::get_users_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page, $populate_extras );
+			$this->members = BP_Core_User::get_users_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page, $populate_extras, $exclude );
 		else if ( false !== $include )
 			$this->members = BP_Core_User::get_specific_users( $include, $this->pag_num, $this->pag_page, $populate_extras );
 		else
-			$this->members = bp_core_get_users( array( 'type' => $this->type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'search_terms' => $search_terms, 'populate_extras' => $populate_extras ) );
+			$this->members = bp_core_get_users( array( 'type' => $this->type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'search_terms' => $search_terms, 'populate_extras' => $populate_extras, 'exclude' => $exclude ) );
 
 		if ( !$max || $max >= (int)$this->members['total'] )
 			$this->total_member_count = (int)$this->members['total'];
@@ -140,7 +140,8 @@
 		'per_page' => 20,
 		'max' => false,
 
-		'include' => false, // Pass a user_id or comma separated list of user_ids to only show these users
+		'include' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to only show these users
+		'exclude' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to exclude these users
 
 		'user_id' => $user_id, // Pass a user_id to only show friends of this user
 		'search_terms' => $search_terms, // Pass search_terms to filter users by their profile data
@@ -156,11 +157,17 @@
 			$per_page = $max;
 	}
 
-	/* Make sure we return no members if we looking at friendship requests and there are none. */
+	if ( is_array( $include ) )
+		$include = implode( ',', $include );
+		
+	if ( is_array( $exclude ) )
+		$exclude = implode( ',', $exclude );
+
+	/* Make sure we return no members if we are looking at friendship requests and there are none. */
 	if ( empty( $include ) && $bp->friends->slug == $bp->current_component && 'requests' == $bp->current_action )
 		return false;
 
-	$members_template = new BP_Core_Members_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $include, (bool)$populate_extras );
+	$members_template = new BP_Core_Members_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $include, (bool)$populate_extras, $exclude );
 
 	return $members_template->has_members();
 }
Index: bp-core/bp-core-classes.php
===================================================================
--- bp-core/bp-core-classes.php	(revision 3275)
+++ bp-core/bp-core-classes.php	(working copy)
@@ -106,7 +106,7 @@
 
 	/* Static Functions */
 
-	function get_users( $type, $limit = null, $page = 1, $user_id = false, $search_terms = false, $populate_extras = true ) {
+	function get_users( $type, $limit = null, $page = 1, $user_id = false, $search_terms = false, $populate_extras = true, $exclude = false ) {
 		global $wpdb, $bp;
 
 		$sql = array();
@@ -137,6 +137,9 @@
 
 		if ( 'alphabetical' == $type )
 			$sql['where_alpha'] = "AND pd.field_id = 1";
+		
+		if ( !empty( $exclude ) )
+			$sql['where_exclude'] = "AND u.ID NOT IN ({$exclude})";
 
 		if ( $user_id && function_exists( 'friends_install' ) ) {
 			$friend_ids = friends_get_friend_user_ids( $user_id );
@@ -216,7 +219,7 @@
 		return array( 'users' => $paged_users, 'total' => $total_users );
 	}
 
-	function get_users_by_letter( $letter, $limit = null, $page = 1, $populate_extras = true ) {
+	function get_users_by_letter( $letter, $limit = null, $page = 1, $populate_extras = true, $exclude = false ) {
 		global $wpdb, $bp;
 
 		if ( $limit && $page )
@@ -228,9 +231,11 @@
 		$letter = like_escape( $wpdb->escape( $letter ) );
 		$status_sql = bp_core_get_status_sql( 'u.' );
 
-		$total_users_sql = apply_filters( 'bp_core_users_by_letter_count_sql', $wpdb->prepare( "SELECT COUNT(DISTINCT u.ID) FROM " . CUSTOM_USER_TABLE . " u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id LEFT JOIN {$bp->profile->table_name_fields} pf ON pd.field_id = pf.id WHERE {$status_sql} AND pf.name = %s AND pd.value LIKE '$letter%%' ORDER BY pd.value ASC", BP_XPROFILE_FULLNAME_FIELD_NAME ), $letter );
-		$paged_users_sql = apply_filters( 'bp_core_users_by_letter_sql', $wpdb->prepare( "SELECT DISTINCT u.ID as id, u.user_registered, u.user_nicename, u.user_login, u.user_email FROM " . CUSTOM_USER_TABLE . " u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id LEFT JOIN {$bp->profile->table_name_fields} pf ON pd.field_id = pf.id WHERE {$status_sql} AND pf.name = %s AND pd.value LIKE '$letter%%' ORDER BY pd.value ASC{$pag_sql}", BP_XPROFILE_FULLNAME_FIELD_NAME ), $letter, $pag_sql );
+		$exclude_sql = ( !empty( $exclude ) ) ? " AND u.ID NOT IN ({$exclude})" : "";
 
+		$total_users_sql = apply_filters( 'bp_core_users_by_letter_count_sql', $wpdb->prepare( "SELECT COUNT(DISTINCT u.ID) FROM " . CUSTOM_USER_TABLE . " u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id LEFT JOIN {$bp->profile->table_name_fields} pf ON pd.field_id = pf.id WHERE {$status_sql} AND pf.name = %s {$exclude_sql} AND pd.value LIKE '$letter%%'  ORDER BY pd.value ASC", BP_XPROFILE_FULLNAME_FIELD_NAME ), $letter );
+		$paged_users_sql = apply_filters( 'bp_core_users_by_letter_sql', $wpdb->prepare( "SELECT DISTINCT u.ID as id, u.user_registered, u.user_nicename, u.user_login, u.user_email FROM " . CUSTOM_USER_TABLE . " u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id LEFT JOIN {$bp->profile->table_name_fields} pf ON pd.field_id = pf.id WHERE {$status_sql} AND pf.name = %s {$exclude_sql} AND pd.value LIKE '$letter%%' ORDER BY pd.value ASC{$pag_sql}", BP_XPROFILE_FULLNAME_FIELD_NAME ), $letter, $pag_sql );
+		
 		$total_users = $wpdb->get_var( $total_users_sql );
 		$paged_users = $wpdb->get_results( $paged_users_sql );
 
Index: bp-core.php
===================================================================
--- bp-core.php	(revision 3275)
+++ bp-core.php	(working copy)
@@ -493,6 +493,7 @@
 	$defaults = array(
 		'type' => 'active', // active, newest, alphabetical, random or popular
 		'user_id' => false, // Pass a user_id to limit to only friend connections for this user
+		'exclude' => false, // Users to exclude from results
 		'search_terms' => false, // Limit to users that match these search terms
 
 		'per_page' => 20, // The number of results to return per page
@@ -503,7 +504,7 @@
 	$params = wp_parse_args( $args, $defaults );
 	extract( $params, EXTR_SKIP );
 
-	return apply_filters( 'bp_core_get_users', BP_Core_User::get_users( $type, $per_page, $page, $user_id, $search_terms, $populate_extras ), &$params );
+	return apply_filters( 'bp_core_get_users', BP_Core_User::get_users( $type, $per_page, $page, $user_id, $search_terms, $populate_extras, $exclude ), &$params );
 }
 
 /**
