diff --git a/wf_required_fields.css b/wf_required_fields.css
new file mode 100644
index 0000000..d9b4f47
--- /dev/null
+++ b/wf_required_fields.css
@@ -0,0 +1,8 @@
+.form-requiring-states {
+  color: #f90;
+}
+
+.form-requiring-states .labels {
+  font-weight: normal;
+  font-size: 0.85em;
+}
\ No newline at end of file
diff --git a/wf_required_fields.inc b/wf_required_fields.inc
index f9cd4f5..cdb5284 100644
--- a/wf_required_fields.inc
+++ b/wf_required_fields.inc
@@ -173,4 +173,29 @@ function wf_required_fields_set_required(&$element) {
     case 'radios':
         unset ($element['#options']['']);
   }
+}
+
+/**
+ * Sets which states would require the field
+ *
+ * @param array $element The Forms API element
+ * @param array $other_requiring_states The non-current states which would require the field
+ */
+function wf_required_fields_set_requiring_states(&$element, $other_requiring_states) {
+  $element['#other_requiring_states'] = $other_requiring_states;
+  $element['#post_render'][] = 'wf_required_fields_render_requiring_states';
+}
+
+function wf_required_fields_render_requiring_states($content, $element) {
+  $addition = theme('wf_requiring_states', $element['#other_requiring_states']);
+  $content = preg_replace('/<\/label>/', $addition . '</label>', $content, 1);
+  return $content;
+}
+
+function theme_wf_requiring_states($states) {
+  drupal_add_css(drupal_get_path('module', 'wf_required_fields') .'/wf_required_fields.css', 'module', 'all', FALSE);
+  return 
+    '<span class="form-requiring-states" title="' . t('This field would be required for these states.') . '">' .
+    '* <span class="labels">' .  implode(', ', $states) . '</span>' .
+    '</span>';
 }
\ No newline at end of file
diff --git a/wf_required_fields.module b/wf_required_fields.module
index bdb7607..4ac7664 100644
--- a/wf_required_fields.module
+++ b/wf_required_fields.module
@@ -51,16 +51,33 @@ function wf_required_fields_form_alter(&$form, &$form_state, $form_id) {
 * Custom after_build callback handler.
 */
 function _wf_required_fields_after_build($form, &$form_state) {
-  $sid = workflow_node_current_state($form['#node']);
   $type = $form['#node']->type;
+  $workflow = workflow_get_workflow_for_type($type);
+  $states = workflow_get_states($workflow);
+  $sids = array_keys($states);
+  $current_sid = workflow_node_current_state($form['#node']);
   $info = content_types($type);
   $fields_available = $info['fields'];
   
   foreach (array_keys($fields_available) as $field) {
-    if (wf_required_fields_is_required($type, $field, $sid)) {
+    $other_requiring_states = array();
+    foreach($sids as $sid) {
+      if (wf_required_fields_is_required($type, $field, $sid)) {
+        if ($sid == $current_sid) {
+          $array =& wf_required_fields_find_required($form, $field);
+          if ($array !== null) {
+            wf_required_fields_set_required($array);
+          }
+        }
+        else {
+          $other_requiring_states[] = $states[$sid];
+        }
+      }
+    }
+    if (!empty($other_requiring_states)) {
       $array =& wf_required_fields_find_required($form, $field);
       if ($array !== null) {
-        wf_required_fields_set_required($array);
+        wf_required_fields_set_requiring_states($array, $other_requiring_states);
       }
     }
   }
@@ -194,3 +211,14 @@ function wf_required_fields_workflow($op, $old_sid, $new_sid, $node) {
       return;
   }
 }
+
+/**
+ * Implementation of hook_theme().
+ */
+function wf_required_fields_theme() {
+  return array(
+    'wf_requiring_states' => array(
+      'arguments' => array('states' => array()),
+    ),
+  );
+} 
\ No newline at end of file
