diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/DateTimeUtils.java b/common/source/java/ch/systemsx/cisd/common/utilities/DateTimeUtils.java
index cbc09b4f8dfa954dd5901c34fd05b9280abb25b0..c52bed6ae1df1cd051ec8858a74f1b6a585af3a7 100644
--- a/common/source/java/ch/systemsx/cisd/common/utilities/DateTimeUtils.java
+++ b/common/source/java/ch/systemsx/cisd/common/utilities/DateTimeUtils.java
@@ -57,41 +57,45 @@ public final class DateTimeUtils
         zoneString.append(prependZeroIfNeeded(num));
         return "GMT" + zoneString.toString();
     }
-    
+
     private final static String prependZeroIfNeeded(final int num)
     {
         return num < 10 ? "0" + num : "" + num;
     }
-    
+
     /**
-     * Renders the specified duration.
+     * Renders the specified duration. If time is negative it is rendered as "?".
      */
-    public static String renderDuration(long durationInMilliseconds)
+    public static String renderDuration(long durationInMillisecondsOrNeg)
     {
-        if (durationInMilliseconds < 1000)
+        if (durationInMillisecondsOrNeg < 0)
+        {
+            return "?";
+        }
+        if (durationInMillisecondsOrNeg < 1000)
         {
-            return render(durationInMilliseconds, "millisecond");
+            return render(1, "sec");
         }
-        long durationInSeconds = (durationInMilliseconds + 500) / 1000;
+        long durationInSeconds = (durationInMillisecondsOrNeg + 500) / 1000;
         if (durationInSeconds < 100)
         {
-            return render(durationInSeconds, "second");
+            return render(durationInSeconds, "sec");
         }
         long durationInMinutes = (durationInSeconds + 30) / 60;
         if (durationInMinutes < 60)
         {
-            return render(durationInMinutes, "minute");
+            return render(durationInMinutes, "min");
         }
         long minutes = durationInMinutes % 60;
         long hours = durationInMinutes / 60;
-        return render(hours, "hour") + " and " + render(minutes, "minute");
+        return render(hours, "h") + " " + render(minutes, "min");
     }
-    
+
     private static String render(long value, String unit)
     {
-        return value == 1 ? value + " " + unit : value + " " + unit + "s"; 
+        return value + unit;
     }
-    
+
     /**
      * Extends the given <var>date</var> until the end of the day.
      */
@@ -101,5 +105,4 @@ public final class DateTimeUtils
                 Calendar.DAY_OF_MONTH), 1), -1);
     }
 
-
 }
diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/DateTimeUtilsTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/DateTimeUtilsTest.java
index 78f5cae4ff61abfd7d3dab02d92287924b8b2321..148e70aebb6e98863a4230557b81b81cfc0fc1ce 100644
--- a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/DateTimeUtilsTest.java
+++ b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/DateTimeUtilsTest.java
@@ -34,17 +34,17 @@ public class DateTimeUtilsTest extends AssertJUnit
     @Test
     public void testRenderDuration()
     {
-        assertEquals("42 milliseconds", DateTimeUtils.renderDuration(42));
-        assertEquals("1 second", DateTimeUtils.renderDuration(1000));
-        assertEquals("42 seconds", DateTimeUtils.renderDuration(42 * 1000 + 499));
-        assertEquals("42 seconds", DateTimeUtils.renderDuration(42 * 1000 - 499));
-        assertEquals("99 seconds", DateTimeUtils.renderDuration(99 * 1000));
-        assertEquals("2 minutes", DateTimeUtils.renderDuration(100 * 1000));
-        assertEquals("42 minutes", DateTimeUtils.renderDuration(42 * 1000 * 60));
-        assertEquals("59 minutes", DateTimeUtils.renderDuration(59 * 1000 * 60));
-        assertEquals("1 hour and 0 minutes", DateTimeUtils.renderDuration(60 * 1000 * 60));
-        assertEquals("1 hour and 1 minute", DateTimeUtils.renderDuration(61 * 1000 * 60));
-        assertEquals("2 hours and 3 minutes", DateTimeUtils.renderDuration(123 * 1000 * 60));
+        assertEquals("1sec", DateTimeUtils.renderDuration(42));
+        assertEquals("1sec", DateTimeUtils.renderDuration(1000));
+        assertEquals("42sec", DateTimeUtils.renderDuration(42 * 1000 + 499));
+        assertEquals("42sec", DateTimeUtils.renderDuration(42 * 1000 - 499));
+        assertEquals("99sec", DateTimeUtils.renderDuration(99 * 1000));
+        assertEquals("2min", DateTimeUtils.renderDuration(100 * 1000));
+        assertEquals("42min", DateTimeUtils.renderDuration(42 * 1000 * 60));
+        assertEquals("59min", DateTimeUtils.renderDuration(59 * 1000 * 60));
+        assertEquals("1h 0min", DateTimeUtils.renderDuration(60 * 1000 * 60));
+        assertEquals("1h 1min", DateTimeUtils.renderDuration(61 * 1000 * 60));
+        assertEquals("2h 3min", DateTimeUtils.renderDuration(123 * 1000 * 60));
     }
 
     @Test