diff -Naur maxlength-6.x-2.0-beta1/maxlength.js maxlength/maxlength.js
--- maxlength-6.x-2.0-beta1/maxlength.js	2008-09-28 17:14:48.000000000 -0700
+++ maxlength/maxlength.js	2010-08-13 09:53:42.840786932 -0700
@@ -1,15 +1,31 @@
 /* $Id: maxlength.js,v 1.1.6.6 2008/09/29 00:14:48 acm Exp $ */
 
+(function($) {
 Drupal.maxLength_limit = function (field) {
   var limit = field.attr("limit");
 
+  var dir = field.attr("count_dir");
+
   // calculate the remaining count of chars
-  var remainingCnt = limit - field.val().length;
+  if(dir == 2){
+    //count up
+    var remainingCnt = field.val().length;
+    if(remainingCnt > limit){
+      $('#maxlength-'+field.attr('id').substr(5) + ' span.maxlength-counter-remaining').addClass("error");
+    }
+    else{
+      $('#maxlength-'+field.attr('id').substr(5) + ' span.maxlength-counter-remaining').removeClass("error");
+    }
+  }else{
+    //count down
+    var remainingCnt = limit - field.val().length;
+    if(remainingCnt < 0){
+      $('#maxlength-'+field.attr('id').substr(5) + ' span.maxlength-counter-remaining').addClass("error");
+    }
+    else{
+      $('#maxlength-'+field.attr('id').substr(5) + ' span.maxlength-counter-remaining').removeClass("error");
+    }
 
-  // if there is not remaining char, we clear additional content
-  if (remainingCnt < 0) {
-    field.val(field.val().substr(0, limit));
-    remainingCnt = 0;
   }
 
   // update the remaing chars text
@@ -25,9 +41,13 @@
   $(document).ready(function(){
     // get all the settings, and save the limits in the fields
     for (var id in Drupal.settings.maxlength) {
-      var limit = Drupal.settings.maxlength[id];
+      var limit = Drupal.settings.maxlength[id].limit;
+      var dir = Drupal.settings.maxlength[id].count_dir;
+
       var element = $("#"+ id);
       element.attr("limit", limit);
+      element.attr("count_dir", dir);
+
       // update the count at the page load
       Drupal.maxLength_limit(element);
 
@@ -37,3 +57,5 @@
     }
   });
 }
+})(jQuery);
+
diff -Naur maxlength-6.x-2.0-beta1/maxlength.module maxlength/maxlength.module
--- maxlength-6.x-2.0-beta1/maxlength.module	2009-06-06 10:53:32.000000000 -0700
+++ maxlength/maxlength.module	2010-08-13 09:56:25.440786926 -0700
@@ -105,10 +105,11 @@
       '<b>'. t('Please remember, it counts all characters, including HTML, so may not work as expected with rich text editors e.g. FCKeditor / tinyMCE.') .'</b>',
         );
     $form['submission'][MAXLENGTH_NODE_TYPE . $label][MAXLENGTH_NODE_TYPE . $label .'_js'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Enable remaining characters countdown for the !label', array('!label' => ucwords($label))),
+      '#type' => 'radios',
+      '#title' => t('Enable remaining characters count for the !label', array('!label' => ucwords($label))),
       '#default_value' => variable_get(MAXLENGTH_NODE_TYPE . $label .'_js_'. $type, '0'),
-      '#description' => t('This will enable a Javascript based count down, as well as the client side validation for the !type field of this content type. If no limit set this is ignored.', array('!type' => $label)),
+      '#options' => array('Disable count', 'Enable count down', 'Enable count up'),
+      '#description' => t('This will enable a Javascript based count, as well as the client side validation for the !type field of this content type. If no limit set this is ignored.', array('!type' => $label)),
     );
     $form['submission'][MAXLENGTH_NODE_TYPE . $label][MAXLENGTH_NODE_TYPE . $label .'_text'] = array(
       '#type' => 'textarea',
@@ -127,10 +128,11 @@
       $new_fields[$key] = $field;
       if ($key == 'max_length') {
         $new_fields[MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_js'] = array(
-          '#type' => 'checkbox',
-          '#title' => t('Enable remaining characters countdown for this field'),
+          '#type' => 'radios',
+          '#title' => t('Enable remaining characters count for this field'),
           '#default_value' => variable_get(MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_js', '0'),
-          '#description' => t('This will enable a Javascript based count down, as well as the client side validation for this field. If no limit set this is ignored.'),
+          '#options' => array('Disable count', 'Enable count down', 'Enable count up'),
+          '#description' => t('This will enable a Javascript based count, as well as the client side validation for this field. If no limit set this is ignored.'),
         );
 
         $new_fields[MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_text'] = array(
@@ -197,7 +199,7 @@
 
     $js_settings = array(
       'maxlength' => array(
-        'edit-'. $id => $values['limit'],
+        'edit-'. $id => array('limit' => $values['limit'], 'count_dir' => $values['use_js']),
       ),
     );
     drupal_add_js($js_settings, 'setting');
