Index: bp-activity/bp-activity-classes.php
===================================================================
--- bp-activity/bp-activity-classes.php	(revision 14368)
+++ bp-activity/bp-activity-classes.php	(working copy)
@@ -452,10 +452,10 @@
 
 		$activity_comments = array();
 
-		/* Now fetch the activity comments and parse them into the correct position in the activities array. */
+		// Now fetch the activity comments and parse them into the correct position in the activities array. 
 		foreach( (array) $activities as $activity ) {
-			if ( 'activity_comment' != $activity->type && $activity->mptt_left && $activity->mptt_right )
-				$activity_comments[$activity->id] = BP_Activity_Activity::get_activity_comments( $activity->id, $activity->mptt_left, $activity->mptt_right, $spam );
+			 $top_level_parent_id = 'activity_comment' == $activity->type ? $activity->item_id : 0; 
+			 $activity_comments[$activity->id] = BP_Activity_Activity::get_activity_comments( $activity->id, $activity->mptt_left, $activity->mptt_right, $spam, $top_level_parent_id );
 		}
 
 		/* Merge the comments with the activity items */
@@ -478,9 +478,13 @@
 	 * @return array The updated activities with nested comments
 	 * @since 1.2
 	 */
-	function get_activity_comments( $activity_id, $left, $right, $spam = 'ham_only' ) {
+	function get_activity_comments( $activity_id, $left, $right, $spam = 'ham_only',$top_level_parent_id = 0 ) {
 		global $wpdb, $bp;
 
+		if ( empty( $top_level_parent_id ) ) { 
+			$top_level_parent_id = $activity_id; 
+ 		} 
+		
 		if ( !$comments = wp_cache_get( 'bp_activity_comments_' . $activity_id ) ) {
 			// Select the user's fullname with the query
 			if ( bp_is_active( 'xprofile' ) ) {
@@ -501,7 +505,8 @@
 			else
 				$spam_sql = '';
 
-			$sql = apply_filters( 'bp_activity_comments_user_join_filter', $wpdb->prepare( "SELECT a.*, u.user_email, u.user_nicename, u.user_login, u.display_name{$fullname_select} FROM {$bp->activity->table_name} a, {$wpdb->users} u{$fullname_from} WHERE u.ID = a.user_id {$fullname_where} AND a.type = 'activity_comment' ${spam_sql} AND a.item_id = %d AND a.mptt_left BETWEEN %d AND %d ORDER BY a.date_recorded ASC", $activity_id, $left, $right ), $activity_id, $left, $right, $spam_sql );
+			// The mptt BETWEEN clause allows us to limit returned descendants to the right part of the tree
+			$sql = apply_filters( 'bp_activity_comments_user_join_filter', $wpdb->prepare( "SELECT a.*, u.user_email, u.user_nicename, u.user_login, u.display_name{$fullname_select} FROM {$bp->activity->table_name} a, {$wpdb->users} u{$fullname_from} WHERE u.ID = a.user_id {$fullname_where} AND a.type = 'activity_comment' ${spam_sql} AND a.item_id = %d AND a.mptt_left BETWEEN %d AND %d ORDER BY a.date_recorded ASC", $top_level_parent_id, $left, $right ), $activity_id, $left, $right, $spam_sql );
 
 			// Retrieve all descendants of the $root node
 			$descendants = $wpdb->get_results( $sql );
