diff -urp --strip-trailing-cr ../drupal-6.x-dev/modules/taxonomy/taxonomy.module ./modules/taxonomy/taxonomy.module
--- ../drupal-6.x-dev/modules/taxonomy/taxonomy.module	2007-10-02 18:15:56.000000000 +0200
+++ ./modules/taxonomy/taxonomy.module	2007-10-25 20:26:29.000000000 +0200
@@ -21,6 +21,9 @@ function taxonomy_theme() {
     'taxonomy_term_select' => array(
       'arguments' => array('element' => NULL),
     ),
+    'taxonomy_term_page' => array(
+      'arguments' => array('tids' => array(), 'result' => NULL),
+    ),
   );
 }
 
diff -urp --strip-trailing-cr ../drupal-6.x-dev/modules/taxonomy/taxonomy.pages.inc ./modules/taxonomy/taxonomy.pages.inc
--- ../drupal-6.x-dev/modules/taxonomy/taxonomy.pages.inc	2007-10-25 10:24:43.000000000 +0200
+++ ./modules/taxonomy/taxonomy.pages.inc	2007-10-25 20:26:29.000000000 +0200
@@ -3,7 +3,7 @@
 
 /**
  * @file
- * Administrative page callbacks for the taxonomy module.
+ * Page callbacks for the taxonomy module.
  */
 
 /**
@@ -41,16 +41,20 @@ function taxonomy_term_page($str_tids = 
           $breadcrumb = array_reverse($breadcrumb);
           drupal_set_breadcrumb($breadcrumb);
 
-          $output = taxonomy_render_nodes(taxonomy_select_nodes($tids, $terms['operator'], $depth, TRUE));
+          $output = theme('taxonomy_term_page', $tids, taxonomy_select_nodes($tids, $terms['operator'], $depth, TRUE));
           drupal_add_feed(url('taxonomy/term/'. $str_tids .'/'. $depth .'/feed'), 'RSS - '. $title);
           return $output;
           break;
 
         case 'feed':
-          $term = taxonomy_get_term($tids[0]);
           $channel['link'] = url('taxonomy/term/'. $str_tids .'/'. $depth, array('absolute' => TRUE));
           $channel['title'] = variable_get('site_name', 'Drupal') .' - '. $title;
-          $channel['description'] = $term->description;
+          // Only display the description if we have a single term, to avoid clutter and confusion.
+          if (count($tids) == 1) {
+            $term = taxonomy_get_term($tids[0]);
+            // HTML will be removed from feed description, so no need to filter here.
+            $channel['description'] = $term->description;
+          }
 
           $result = taxonomy_select_nodes($tids, $terms['operator'], $depth, FALSE);
 
@@ -60,6 +64,7 @@ function taxonomy_term_page($str_tids = 
 
           node_feed($items, $channel);
           break;
+
         default:
           drupal_not_found();
       }
@@ -71,6 +76,30 @@ function taxonomy_term_page($str_tids = 
 }
 
 /**
+ * Render a taxonomy term page HTML output.
+ * 
+ * @param array $tids
+ *   An array of term ids.
+ * @param $result
+ *   A pager_query() result, such as that performed by taxonomy_select_nodes().
+ */
+function theme_taxonomy_term_page($tids, $result) {
+  $output = '';
+  
+  // Only display the description if we have a single term, to avoid clutter and confusion.
+  if (count($tids) == 1) {
+    $term = taxonomy_get_term($tids[0]);
+    $output .= '<div class="taxonomy-term-description">';
+    $output .= filter_xss_admin($term->description);
+    $output .= '</div>';
+  }
+  
+  $output .= taxonomy_render_nodes($result);
+  
+  return $output;
+}
+
+/**
  * Helper function for autocompletion
  */
 function taxonomy_autocomplete($vid, $string = '') {
