diff --git modules/taxonomy.views.inc modules/taxonomy.views.inc
index ff1cb6b..2e3dc56 100644
--- modules/taxonomy.views.inc
+++ modules/taxonomy.views.inc
@@ -172,6 +172,25 @@ function taxonomy_views_data() {
     ),
   );
 
+  $data['term_data']['tid_depth'] = array(
+    'title' => t('Term ID (with depth)'),
+    'help' => t('The depth filter is more complex, so provides fewer options.'),
+    'real field' => 'tid',
+    'argument' => array(
+      'handler' => 'views_handler_argument_term_data_tid_depth',
+      'accept depth modifier' => TRUE,
+    ),
+  );
+
+  $data['term_data']['tid_depth_modifier'] = array(
+    'group' => t('Taxonomy'),
+    'title' => t('Term ID depth modifier'),
+    'help' => t('Allows the "depth" for Taxonomy: Term ID (with depth) to be modified via an additional argument.'),
+    'argument' => array(
+      'handler' => 'views_handler_argument_term_node_tid_depth_modifier',
+    ),
+  );
+
   // ----------------------------------------------------------------------
   // term_node table
 
@@ -413,6 +432,9 @@ function taxonomy_views_handlers() {
       'views_handler_argument_term_node_tid_depth_modifier' => array(
         'parent' => 'views_handler_argument',
       ),
+      'views_handler_argument_term_data_tid_depth' => array(
+        'parent' => 'views_handler_argument_term_node_tid_depth',
+      ),
       'views_handler_argument_taxonomy' => array(
         'parent' => 'views_handler_argument',
       ),
diff --git modules/taxonomy/views_handler_argument_term_data_tid_depth.inc modules/taxonomy/views_handler_argument_term_data_tid_depth.inc
new file mode 100644
index 0000000..21b1e42
--- /dev/null
+++ modules/taxonomy/views_handler_argument_term_data_tid_depth.inc
@@ -0,0 +1,85 @@
+<?php
+// $Id: views_handler_argument_term_node_tid_depth.inc,v 1.3.2.1 2010/03/16 23:38:23 merlinofchaos Exp $
+
+/**
+ * Argument handler for taxonomy terms with depth.
+ *
+ * This handler is actually part of the node table and has some restrictions,
+ * because it uses a subquery to find nodes with
+ */
+class views_handler_argument_term_data_tid_depth extends views_handler_argument_term_node_tid_depth {
+  function query() {
+    $this->ensure_my_table();
+
+    if (!empty($this->options['break_phrase'])) {
+      $tids = new stdClass();
+      $tids->value = $this->argument;
+      $tids = views_break_phrase($this->argument, $tids);
+      if ($tids->value == -1) {
+        return FALSE;
+      }
+
+      if (count($tids->value) > 1) {
+        $placeholder = " IN (" . implode(', ', array_fill(0, sizeof($tids->value), '%d')) . ")";
+      }
+      else {
+        $placeholder = " = %d";
+      }
+
+      $tids = $tids->value;
+    }
+    else {
+      $placeholder = "= %d";
+      $tids = array($this->argument);
+    }
+
+    $where_group = $this->query->set_where_group('OR');
+
+    if ($this->options['depth'] > 0) {
+      $join_alias = $this->query->ensure_table('term_hierarchy');
+      if ($join_alias) {
+        $this->query->add_where($where_group, "$join_alias.parent $placeholder", $tids);
+
+        $depth = $this->options['depth'];
+        for ($i = 1; $i < $depth; $i++) {
+          $join = views_get_table_join('term_hierarchy', $this->table);
+          if ($join) {
+            $join = drupal_clone($join);
+
+            $join->type = 'LEFT';
+            $join->left_table = NULL;
+            $join->left_field = $join_alias . '.parent';
+
+            $join_alias = $this->query->add_table($this->table, NULL, $join);
+            $this->query->add_where($where_group, "$join_alias.parent $placeholder", $tids);
+          }
+        }
+      }
+    }
+    else if ($this->options['depth'] < 0) {
+      $join_alias = $this->query->ensure_table('term_hierarchy');
+
+      if ($join_alias) {
+        $this->query->add_where($where_group, "$join_alias.tid $placeholder", $tids);
+
+        $depth = abs($this->options['depth']);
+        for ($i = 1; $i < $depth; $i++) {
+          $join = views_get_table_join('term_hierarchy', $this->table);
+          if ($join) {
+            $join = drupal_clone($join);
+
+            $join->type = 'LEFT';
+            $join->left_table = NULL;
+            $join->left_field = $join_alias . '.tid';
+            $join->field = 'parent';
+
+            $join_alias = $this->query->add_table($this->table, NULL, $join);
+            $this->query->add_where($where_group, "$join_alias.tid $placeholder", $tids);
+          }
+        }
+      }
+    }
+
+    $this->query->add_where($where_group, "$this->table_alias.$this->real_field $placeholder", $tids);
+  }
+}
