diff --git a/include/class.forms.php b/include/class.forms.php
index 1aec98b1f91cd36d1a58beab59fca33f7301b998..2f8582855c64596e1f364476b4a449f0b0185d04 100644
--- a/include/class.forms.php
+++ b/include/class.forms.php
@@ -999,10 +999,17 @@ class FormField {
             return __('%s not in (%s)');
         }
     }
+
     function describeSearch($method, $value, $name=false) {
+        $name = $name ?: $this->get('name');
         $desc = $this->describeSearchMethod($method);
-        $value = $this->toString($value);
-        return sprintf($desc, $name, $value);
+        switch ($method) {
+            case 'set':
+            case 'nset':
+                return sprintf($desc, $name);
+            default:
+                 return sprintf($desc, $name, $this->toString($value));
+        }
     }
 
     function addToQuery($query, $name=false) {
@@ -1935,6 +1942,18 @@ class DatetimeField extends FormField {
     var $min = null;
     var $max = null;
 
+    static function intervals($count=2, $i='') {
+        $intervals = array(
+            'i' => _N('minute', 'minutes', $count),
+            'h' => _N('hour', 'hours', $count),
+            'd' => _N('day','days', $count),
+            'w' => _N('week', 'weeks', $count),
+            'm' => _N('month', 'months', $count),
+        );
+
+        return $i ? $intervals[$i] : $intervals;
+    }
+
     // Get php DatateTime object of the field  - null if value is empty
     function getDateTime($value=null) {
         return Format::parseDateTime($value ?: $this->value);
@@ -2154,21 +2173,14 @@ class DatetimeField extends FormField {
     function getSearchMethodWidgets() {
         $config_notime = $config = $this->getConfiguration();
         $config_notime['time'] = false;
-        $nday_form = function() {
-            $intervals = array(
-                'i' => _N('minute', 'minutes', 5),
-                'h' => _N('hour', 'hours', 5),
-                'd' => _N('day','days', 5),
-                'w' => _N('week', 'weeks', 5),
-                'm' => _N('month', 'months', 5),
-            );
+        $nday_form = function($x=5) {
             return array(
                 'until' => new TextboxField(array(
                     'configuration' => array('validator'=>'number', 'size'=>4))
                 ),
                 'int' => new ChoiceField(array(
                     'default' => 'd',
-                    'choices' => $intervals,
+                    'choices' => self::intervals($x),
                 )),
             );
         };
@@ -2312,13 +2324,31 @@ class DatetimeField extends FormField {
     }
 
     function describeSearch($method, $value, $name=false) {
-        if ($method === 'between') {
-            $l = $this->toString($value['left']);
-            $r = $this->toString($value['right']);
-            $desc = $this->describeSearchMethod($method);
-            return sprintf($desc, $name, $l, $r);
+
+        $name = $name ?: $this->get('name');
+        $desc = $this->describeSearchMethod($method);
+        switch ($method) {
+            case 'between':
+                return sprintf($desc, $name,
+                        $this->toString($value['left']),
+                        $this->toString($value['right']));
+            case 'ndays':
+            case 'ndaysago':
+            case 'distfut':
+            case 'distpast':
+                $interval = sprintf('%s %s', $value['until'],
+                        self::intervals($value['until'], $value['int']));
+                return sprintf($desc, $name, $interval);
+                break;
+            case 'future':
+            case 'past':
+                return sprintf($desc, $name);
+            case 'before':
+            case 'after':
+                return sprintf($desc, $name, $this->toString($value));
+            default:
+                return parent::describeSearch($method, $value, $name);
         }
-        return parent::describeSearch($method, $value, $name);
     }
 
     function supportsQuickFilter() {