diff --git a/scheduler_workbench.module b/scheduler_workbench.module
index eb57202..1c435b2 100644
--- a/scheduler_workbench.module
+++ b/scheduler_workbench.module
@@ -136,6 +136,7 @@ function scheduler_workbench_form_alter(&$form, $form_state) {
  */
 function scheduler_workbench_module_implements_alter(&$implementations, $hook) {
   switch ($hook) {
+    case 'node_presave':
     case 'form_node_type_form_alter':
     case 'form_alter':
       $group = $implementations['scheduler_workbench'];
@@ -188,3 +189,16 @@ function _scheduler_workbench_scheduler_pre_publish(&$node) {
     $node->workbench_moderation_state_new = $state;
   }
 }
+
+/**
+ * Implements hook_node_presave().
+ */
+function scheduler_workbench_node_presave($node) {
+  // Make sure node is properly published if saved with the publish modetation state with a
+  // scheduled published date.
+  $publish_state = variable_get('scheduler_publish_moderation_state_' . $node->type, FALSE);
+  if ($node->publish_on > 0 && $publish_state && $publish_state == $node->workbench_moderation_state_new) {
+    $node->publish_on = 0;
+    $node->status = 1;
+  }
+}
