diff --git a/node_revision_delete.module b/node_revision_delete.module
old mode 100755
new mode 100644
index d2005e3..513bbf6
--- a/node_revision_delete.module
+++ b/node_revision_delete.module
@@ -70,11 +70,15 @@ function node_revision_delete_cron() {
   }
 
   // Figure out whether we should delete revisions or not on this run.
+  $oldest_revision_to_keep = variable_get('node_revision_delete_age');
   $node_revision_delete_time = variable_get('node_revision_delete_time');
   $node_revision_delete_last_execute = variable_get('node_revision_delete_last_execute');
   $execute_revision_delete = 0;
   $current_time = time();
   $time_difference = $current_time - $node_revision_delete_last_execute;
+  $revision_expire_date = 0;
+  $dry_run = FALSE;
+  $nodes_effected = 0;
   switch ($node_revision_delete_time) {
     case 'every_time':
       variable_set('node_revision_delete_last_execute', $current_time);
@@ -136,8 +140,38 @@ function node_revision_delete_cron() {
         $execute_revision_delete = 1;
       }
       break;
+    case 'dry_run':
+      $execute_revision_delete = 1;
+      $dry_run = TRUE;
+      break;
+  }
+  // Figure out whether we should remove revisions or not based on life-time
+   switch ($oldest_revision_to_keep) {
+    case 'everyday':
+      $revision_expire_date = $current_time - 86400;
+      break;
+    case 'every_week':
+      $revision_expire_date = $current_time - 604800;
+      break;
+    case 'every_10_days':
+      $revision_expire_date = $current_time - 864000;
+      break;
+    case 'every_15_days':
+      $revision_expire_date = $current_time - 1296000;
+      break;
+    case 'every_month':
+      $revision_expire_date = $current_time - 2592000;
+      break;
+    case 'every_3_months':
+      $revision_expire_date = $current_time - 7776000;
+      break;
+    case 'every_6_months':
+      $revision_expire_date = $current_time - 15552000;
+      break;
+    case 'every_year':
+      $revision_expire_date = $current_time - 31536000*3;
+      break;
   }
-
   if ($execute_revision_delete) {
     $max = variable_get('node_revision_delete_cron', NODE_REVISION_DELETE_CRON);
     $tracked_content_types = node_revision_delete_content_types();
@@ -146,7 +180,12 @@ function node_revision_delete_cron() {
     foreach (node_revision_delete_content_types() as $content_type => $revisions_to_keep) {
       $candidate_nids = node_revision_delete_candidates($content_type, $revisions_to_keep);
       if (!empty($candidate_nids)) {
-        foreach ($candidate_nids as $nid) {
+        foreach ($candidate_nids as $nid_timestamp) {
+          $nid = $nid_timestamp->nid;
+          $timestamp = $nid_timestamp->timestamp;
+          // Decide whether remove or not the revision by life-time
+          $revision_is_expired = ($timestamp < $revision_expire_date);
+          if (!$revision_is_expired) return;
           $deleted_revisions = _node_revision_delete_do_delete($nid, $revisions_to_keep, $max);
           $total_deleted += $deleted_revisions->count;
           if ($total_deleted >= $max) {
@@ -232,7 +271,7 @@ function node_revision_delete_content_types() {
  *   Array of nids.
  */
 function node_revision_delete_candidates($content_type, $max_revisions) {
-  $result = db_query('SELECT n.nid, count(*) as total
+  $result = db_query('SELECT n.nid, count(*), r.timestamp as total
                      FROM {node} n
                      INNER JOIN {node_revision} r ON r.nid = n.nid
                      WHERE n.type = :content_type
@@ -305,6 +344,7 @@ function node_revision_delete_form($form, &$form_state) {
     'every_3_months' => 'Every 3 Months',
     'every_6_months' => 'Every 6 Months',
     'every_year' => 'Every Year',
+    'dry_run' => 'Test run now without deleting and output result',
   );
   $form['node_revision_delete_time'] = array(
     '#type' => 'select',
@@ -318,6 +358,12 @@ function node_revision_delete_form($form, &$form_state) {
     '#description' => t('This will start a batch job to delete old revisions for tracked content types.'),
     '#default_value' => 0,
   );
+  $form['node_revision_delete_age'] = array(
+    '#type' => 'select',
+    '#options' => $option_time,
+    '#title' => t('Oldest revision to keep'),
+    '#default_value' => variable_get('node_revision_delete_age'),
+  );
   $form['actions'] = array('#type' => 'actions');
   $form['actions']['submit'] = array(
     '#type' => 'submit',
@@ -331,8 +377,9 @@ function node_revision_delete_form($form, &$form_state) {
  * Form submit handler for the settings form.
  */
 function node_revision_delete_form_submit($form, &$form_state) {
-  variable_set('node_revision_delete_cron', $form_state['values']['node_revision_delete_cron']);
-  variable_set('node_revision_delete_time', $form_state['values']['node_revision_delete_time']);
+  if (isset($form_state['values']['node_revision_delete_cron'])) variable_set('node_revision_delete_cron', $form_state['values']['node_revision_delete_cron']);
+  if (isset($form_state['values']['node_revision_delete_time'])) variable_set('node_revision_delete_time', $form_state['values']['node_revision_delete_time']);
+  if (isset($form_state['values']['node_revision_delete_age'])) variable_set('node_revision_delete_age', $form_state['values']['node_revision_delete_age']);
   if ($form_state['values']['run_now'] == 1) {
     // Set up the batch job.
     $operations = array();
