diff --git a/userpoints_evaporate.admin.inc b/userpoints_evaporate.admin.inc
index 82b534c..83ecf61 100644
--- a/userpoints_evaporate.admin.inc
+++ b/userpoints_evaporate.admin.inc
@@ -12,6 +12,7 @@ function userpoints_evaporate_admin_settings() {
     'interval' => USERPOINTS_EVAPORATE_DAY, 
     'number' => 1,
     'description' => '',
+    'nonegative' => FALSE,
     'inactive' => array(
       'enabled' => FALSE, 
       'delta' => 0, 
@@ -85,6 +86,14 @@ function userpoints_evaporate_admin_settings() {
       '#default_value' => $settings[$tid]['description'],
     );
 
+    $form['userpoints_evaporate'][$tid]['nonegative'] = array(
+      '#type' => 'checkbox',
+      '#title' => 'No Negative',
+      '#description' => t('If checked, %term !points will not evaporate if the total would end up being a negative number.', $translation),
+      '#options' => array(0, 1),
+      '#default_value' => $settings[$tid]['nonegative'],
+    );
+
     $form['userpoints_evaporate'][$tid]['inactive'] = array(
       '#title' => 'Inactive',
       '#type' => 'fieldset',
diff --git a/userpoints_evaporate.install b/userpoints_evaporate.install
index 6137045..33a13d9 100644
--- a/userpoints_evaporate.install
+++ b/userpoints_evaporate.install
@@ -42,3 +42,23 @@ function userpoints_evaporate_update_7002() {
   // Fix the points total as it is displayed on the user's points tab.
   db_query("UPDATE {userpoints_total} AS t SET points = (SELECT SUM(points) FROM {userpoints} AS u WHERE u.uid = t.uid)");
 }
+
+/**
+ * Add a default OFF setting for nonegative on each userpoints category.
+ */
+function userpoints_evaporate_update_7003() {
+  $terms = userpoints_get_categories();
+  $settings = variable_get('userpoints_evaporate', array());
+
+  foreach ($terms as $tid => $term) {
+    $settings[$tid]['nonegative'] = FALSE;
+  }
+
+  // Store the update settings.
+  variable_set('userpoints_evaporate', $settings);
+
+  // Tell the user what we did.
+  $translation = userpoints_translation();
+  $translation['!module'] = l(st('Userpoints Evaporate settings'), 'admin/config/people/userpoints/evaporate');
+  drupal_set_message(st('A new <em>No Negative</em> setting was added for each !points category. This setting defaults to FALSE, allowing !points totals to become negative. Please review your !module now.', $translation), 'warning');
+}
diff --git a/userpoints_evaporate.module b/userpoints_evaporate.module
index cf108e5..e966320 100644
--- a/userpoints_evaporate.module
+++ b/userpoints_evaporate.module
@@ -105,9 +105,8 @@ function userpoints_evaporate_cron() {
     $args_ttl = array(':tid' => $tid);
 
     // If only for inactive users, check for last activity. This must be done
-    // before I check for the userpoints_no_negative module, as the INNER JOIN
-    // is more efficient than a sub-query and the sub-query might not
-    // get cached.
+    // before checking for nonegative, as the INNER JOIN is more efficient than
+    // a sub-query and the sub-query might not get cached.
     if ($setting['inactive']['enabled']) {
       // Calculate as a number of seconds.
       $delta  = $setting['inactive']['unit'];
@@ -125,11 +124,8 @@ function userpoints_evaporate_cron() {
     // Limit tnx insert to records with the current tid only.
     $query_txn .= " WHERE up.tid = :tid";
 
-    // If the no_negative module is installed, don't allow points to go
-    // negative. Unfortunately I need to re-check whether this only needs to
-    // happen for inactive users, as the ttl query I'm appending to can be
-    // different if so.
-    if (module_exists("userpoints_no_negative")) {
+    // There is no 7.x no_negative module, so use our own setting.
+    if (!empty($setting['nonegative'])) {
       $query_txn .= " AND up.points >= :balance";
       $args_txn[':balance'] = $setting['number'];
 
