--- taxonomy.php.ori	2010-06-19 13:15:57.046875000 +0200
+++ taxonomy.php	2010-07-03 17:45:48.968750000 +0200
@@ -906,16 +906,12 @@
 		$exclude = '';
 		$exclude_tree = '';
 		$interms = wp_parse_id_list($include);
-		foreach ( $interms as $interm ) {
-			if ( empty($inclusions) )
-				$inclusions = ' AND ( t.term_id = ' . intval($interm) . ' ';
-			else
-				$inclusions .= ' OR t.term_id = ' . intval($interm) . ' ';
-		}
+		$interms = array_map( 'intval', $interms );
+		$inclusions = implode( ',', $interms );
 	}
 
 	if ( !empty($inclusions) )
-		$inclusions .= ')';
+		$inclusions = ' AND t.term_id IN ( ' . $inclusions . ' )';
 	$where .= $inclusions;
 
 	$exclusions = '';
@@ -924,27 +920,22 @@
 		foreach ( $excluded_trunks as $extrunk ) {
 			$excluded_children = (array) get_terms($taxonomies[0], array('child_of' => intval($extrunk), 'fields' => 'ids'));
 			$excluded_children[] = $extrunk;
-			foreach( $excluded_children as $exterm ) {
-				if ( empty($exclusions) )
-					$exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' ';
-				else
-					$exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' ';
-			}
+			$excluded_children = array_map( 'intval', $excluded_children );
+			$exclusions = implode( ',', $excluded_children );
 		}
 	}
 
 	if ( !empty($exclude) ) {
 		$exterms = wp_parse_id_list($exclude);
-		foreach ( $exterms as $exterm ) {
-			if ( empty($exclusions) )
-				$exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' ';
-			else
-				$exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' ';
-		}
+		$exterms = array_map( 'intval', $exterms );
+		if ( empty( $exclusions ) )
+			$exclusions = implode( ',', $exterms );
+		else
+			$exclusions .= ', ' . implode( ',', $exterms );
 	}
 
 	if ( !empty($exclusions) )
-		$exclusions .= ')';
+		$exclusions = ' AND t.term_id NOT IN ( ' . $exclusions . ' )';
 	$exclusions = apply_filters('list_terms_exclusions', $exclusions, $args );
 	$where .= $exclusions;
 
