diff --git a/comment_closer.install b/comment_closer.install
index 7a32659..d1f3615 100644
--- a/comment_closer.install
+++ b/comment_closer.install
@@ -7,6 +7,9 @@
  * Implementation of hook_uninstall().
  */
 function comment_closer_uninstall() {
+  // Delete tables.
+  drupal_uninstall_schema('comment_closer');
+  
   variable_del('comment_closer_age');
   variable_del('comment_closer_cycle_period');
   variable_del('comment_closer_next_date');
@@ -86,3 +89,48 @@ function comment_closer_update_6001() {
 
   return $ret;
 }
+
+/**
+ * Implementation of hook_update_N().
+ * Create tables
+ **/
+function comment_closer_update_6002() {
+  // Create tables.
+  drupal_install_schema('comment_closer');
+}
+
+/**
+* Implementation of hook_schema().
+*/
+function comment_closer_schema() {
+  $schema['comment_closer_node'] = array(
+    'description' => 'Stores comment closer node status.',
+    'fields' => array(
+      'nid' => array(
+        'description' => 'The primary identifier for a node.',
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE
+      ),
+      'status' => array(
+        'type' => 'int', 'not null' => TRUE, 'default' => 0, 'size' => 'tiny',
+        'description' => 'Comment closer node status.',
+      ),
+    ),    
+    'primary key' => array('nid'),
+    'indexes' => array(
+      'status' => array('status'),
+    ),
+  );
+  return $schema;
+}
+
+
+/**
+* Implementation of hook_install().
+*/
+function comment_closer_install() {
+  // Create tables.
+  drupal_install_schema('comment_closer');
+  
+}
diff --git a/comment_closer.module b/comment_closer.module
index 8d667d9..432edb6 100644
--- a/comment_closer.module
+++ b/comment_closer.module
@@ -6,6 +6,8 @@
  * Automatically close comments on nodes beyond a configurable age
  */
 
+define('COMMENT_CLOSER_STATUS_DEFAULT', 0); // Respect the default in settings (either auto close or nothing)
+define('COMMENT_CLOSER_STATUS_DONOTCLOSE', 1);
 /**
  * Implements hook_help().
  */
@@ -122,16 +124,48 @@ function comment_closer_settings() {
  * Show a message about when the closing will happen.
  */
 function comment_closer_nodeapi(&$node, $op, $teaser, $page) {
-  // If we are on a cc node type and have enabled the notice, display it.
-  if (variable_get("comment_closer_age_number_$node->type", 0)
-    && variable_get("comment_closer_notice_$node->type", 0) == 1) {
-    if ($op == 'view' && $page == TRUE) {
-      $node->content['comment_closer_notice'] = array(
-        '#value' => theme('comment_closer_notice', $node),
-        // Put it at the bottom, close to the comments.
-        '#weight' => 10,
-      );
-    }
+  
+  switch ($op) {
+    case 'view':
+      // If we are on a cc node type and have enabled the notice, display it.
+      if (variable_get("comment_closer_age_number_$node->type", 0)
+        && variable_get("comment_closer_notice_$node->type", 0) == 1) {
+        if ($page == TRUE) {
+          $node->content['comment_closer_notice'] = array(
+            '#value' => theme('comment_closer_notice', $node),
+            // Put it at the bottom, close to the comments.
+            '#weight' => 10,
+          );
+        }
+      }
+    
+      break;
+    case 'load':
+      $status = db_result(db_query("SELECT status FROM {comment_closer_node} WHERE nid = %d", $node->nid));
+      if ($status !== FALSE) {
+        $node->comment_closer_status = $status;
+      }
+      break;
+    case 'insert':
+    case 'update':
+      if (isset($node->comment_closer_status)) {
+        $object = new stdClass();
+        $object->nid = $node->nid;
+        $object->status = $node->comment_closer_status;
+        
+        $old_status = db_result(db_query("SELECT status FROM {comment_closer_node} WHERE nid = %d", $node->nid));
+        if ($old_status !== FALSE) {
+          drupal_write_record('comment_closer_node', $object, 'nid');
+        } else {
+          drupal_write_record('comment_closer_node', $object);
+        }
+      }
+      break;
+    case 'delete':
+      db_query("DELETE FROM {comment_closer_node} WHERE nid = %d", $node->nid);
+      break;
+    case 'default':
+      break;
   }
 }
 
@@ -144,6 +178,11 @@ function theme_comment_closer_notice($node) {
 
   $type = node_get_types('name', $node);
 
+  // If node set to DONOTCLOSE no message needed.
+  if ($node->comment_closer_status == COMMENT_CLOSER_STATUS_DONOTCLOSE) {
+    return '';
+  }
+
   // Is commenting active now?
   if ($node->comment == COMMENT_NODE_READ_WRITE) {
     $when = strtotime("+$age_num $age_unit", $node->created);
@@ -187,8 +226,8 @@ function comment_closer_cron() {
       $oldest_allowed = _comment_closer_oldest_allowed($age_unit, $age_num, $now);
 
       // Knock it out.
-      $query = "UPDATE {node} SET comment = 1 WHERE created < %d AND type = '%s'";
-      $args = array($oldest_allowed, $type);
+      $query = "UPDATE {node} n LEFT JOIN {comment_closer_node} ccn ON (n.nid = ccn.nid) SET n.comment = 1 WHERE n.created < %d AND type = '%s' AND ccn.status <> %d";
+      $args = array($oldest_allowed, $type, COMMENT_CLOSER_STATUS_DONOTCLOSE);
       $result = db_query($query, $args);
       $affected = db_affected_rows();
       if ($affected) {
@@ -205,11 +244,13 @@ function comment_closer_cron() {
     // If a comment limit is set, do this one.
     if ($com_limit) {
       $query = "UPDATE {node} n, {node_comment_statistics} ncs "
+        . "LEFT JOIN {comment_closer_node} ccn ON (n.nid = ccn.nid)"
         . "SET n.comment = 1 "
         . "WHERE ncs.nid = n.nid AND n.comment = 2 "
         . "AND ncs.comment_count >= %d AND n.type = '%s' "
+        . "AND ccn.status <> %d "
         ;
-      $args = array($com_limit, $type);
+      $args = array($com_limit, $type, COMMENT_CLOSER_STATUS_DONOTCLOSE);
       $result = db_query($query, $args);
       $affected = db_affected_rows();
       if ($affected) {
@@ -401,6 +442,26 @@ function comment_closer_form_alter(&$form, $form_state, $form_id) {
 
       return;
   }
+
+  if (isset($form['#node']) && $form_id == $form['#node']->type .'_node_form') {
+    $node = $form['#node'];
+    $age_num = variable_get("comment_closer_age_number_$node->type", 0);
+    $age_unit = variable_get("comment_closer_age_unit_$node->type", 'day');
+    $com_limit = variable_get("comment_closer_comment_limit_$type", 0);
+
+    if ($age_num != 0 || $com_limit != 0) {
+      $form['comment_settings']['comment_closer_status'] = array(
+        '#type' => 'select',
+        '#weight' => user_access('administer comments'),
+        '#title' => t('Comment closer settings for this node'),
+        '#default_value' => $node->comment_closer_status ? $node->comment_closer_status : COMMENT_CLOSER_STATUS_DEFAULT,
+        '#options' => array(
+          COMMENT_CLOSER_STATUS_DEFAULT => 'Site default',
+          COMMENT_CLOSER_STATUS_DONOTCLOSE => 'Do not close comments',
+        ),
+      );
+    }
+  }
 }
 
 function _comment_closer_age_validate($element, &$form_state) {
