Index: taxonomy.rules.inc
===================================================================
--- taxonomy.rules.inc	(revision 1088)
+++ taxonomy.rules.inc	(working copy)
@@ -277,5 +277,49 @@
 }
 
 /**
+ * Implementation of hook_rules_condition_info().
+ */
+function taxonomy_rules_condition_info() {
+  $info = array();
+  $info['taxonomy_rules_has_tid'] = array(
+    'label' => t('Content has term assigned'),
+    'arguments' => array(
+      'node' => array('type' => 'node', 'label' => t('Taxonomy')),
+    ),
+    'eval input' => array('code'),
+    'help' => t('You should make sure that the used vocabulary exists in the given content type. The condition returns TRUE, if the node has the given taxonomy.'),
+    'module' => 'Taxonomy',
+  );
+  return $info;
+}
+
+/**
+ * Taxonomy rule condition configuration form.
+ */
+function taxonomy_rules_has_tid_form($settings, &$form, &$form_state) {
+  $settings += array('tid' => '');
+
+  // this should be more user friendly, allowing vid then tid selection, indeed this is a proof of the concept
+  $form['settings']['tid'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Taxonomy term'),
+    '#default_value' => $settings['tid'],
+    '#description' => t('Select the tid(s) of the term(s) (comma separated numerical tid).'),
+  );
+}
+
+/**
+ * Condition: Check the value(s) of taxonomy tid(s).
+ */
+function taxonomy_rules_has_tid($node, $settings, $element, &$state) {
+
+  $rule_tid_array = explode(',', $settings['tid']);
+  $node_tid_array = array_keys($node->taxonomy);
+  $check_tid_array = array_intersect($rule_tid_array, $node_tid_array);
+
+  return !empty($check_tid_array);
+}
+
+/**
  * @}
  */
