diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/DirectoryScanningTimerTask.java b/common/source/java/ch/systemsx/cisd/common/utilities/DirectoryScanningTimerTask.java
index c6683546c359a20bc1cb833b47256e13f9d6386d..769987aa13905545d0256063e2d5667e1a2f9857 100644
--- a/common/source/java/ch/systemsx/cisd/common/utilities/DirectoryScanningTimerTask.java
+++ b/common/source/java/ch/systemsx/cisd/common/utilities/DirectoryScanningTimerTask.java
@@ -200,11 +200,12 @@ public final class DirectoryScanningTimerTask extends TimerTask
         }
         try
         {
-            int numberOfItems;
+            int numberOfItemsHandled;
             do
             {
                 final StoreItem[] storeItems = listStoreItems();
-                numberOfItems = storeItems.length;
+                final int numberOfItems = storeItems.length;
+                numberOfItemsHandled = numberOfItems;
                 directoryScanningHandler.beforeHandle();
                 for (int i = 0; i < numberOfItems; i++)
                 {
@@ -241,6 +242,7 @@ public final class DirectoryScanningTimerTask extends TimerTask
                         }
                     } else
                     {
+                        --numberOfItemsHandled;
                         if (operationLog.isTraceEnabled())
                         {
                             operationLog.trace(String.format(
@@ -248,7 +250,7 @@ public final class DirectoryScanningTimerTask extends TimerTask
                         }
                     }
                 }
-            } while (numberOfItems > 0);
+            } while (numberOfItemsHandled > 0);
         } catch (final Exception ex)
         {
             printNotification(ex);