Index: src/wp-includes/comment.php
===================================================================
--- src/wp-includes/comment.php	(revision 31268)
+++ src/wp-includes/comment.php	(working copy)
@@ -1375,15 +1375,25 @@
 
 	$comtypewhere = ( 'all' != $args['type'] && isset($allowedtypes[$args['type']]) ) ? " AND comment_type = '" . $allowedtypes[$args['type']] . "'" : '';
 
-	// Count comments older than this one
-	$oldercoms = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = 0 AND comment_approved = '1' AND comment_date_gmt < '%s'" . $comtypewhere, $comment->comment_post_ID, $comment->comment_date_gmt ) );
+	// Determine proper date comparison operator based on comment order
+	$comment_order = get_option('comment_order');
+	if ($comment_order == 'desc') {
+		$date_compare = '>';
+	} else {
+		$date_compare = '<';
+	}
 
-	// No older comments? Then it's page #1.
-	if ( 0 == $oldercoms )
+	// Count comments older/newer than this one.
+	// If comment order is "desc" (newer at the top), find newer comments.
+	// If comment order is "asc" (older at the top), find older comments.
+	$foundcoms = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = 0 AND comment_approved = '1' AND comment_date_gmt " . $date_compare . " '%s'" . $comtypewhere, $comment->comment_post_ID, $comment->comment_date_gmt ) );
+
+	// No older/newer comments? Then it's page #1.
+	if ( 0 == $foundcoms )
 		return 1;
 
-	// Divide comments older than this one by comments per page to get this comment's page number
-	return ceil( ( $oldercoms + 1 ) / $args['per_page'] );
+	// Divide comments older/newer than this one by comments per page to get this comment's page number
+	return ceil( ( $foundcoms + 1 ) / $args['per_page'] );
 }
 
 /**
