diff --git a/asdf.lisp b/asdf.lisp
index 5bde8d9d7cf3c4905bc374c22c01e97f8a80659a..dba4f7841ae72052bf1353bbcf19377d679701f7 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -1376,6 +1376,7 @@ Returns the new tree (which probably shares structure with the old one)"
 	 (loop for data = rest then (cddr data)
 	      for key = (and data (first data))
 	      for value = (and data (second data)) 
+              while data
 	      when (eq key keyword) do
 	      (destructuring-bind (op qual (o c) &body body) value
 	      (pushnew
diff --git a/debian/changelog b/debian/changelog
index 2bd196317ebedcf4795d06ef69074c93fc7bd12f..9753da78e363856aacf5e467afed9f54fbb0f921 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+cl-asdf (1:20090819-3) unstable; urgency=low
+
+  * Fixed the loop construct again. (Closes: #546205) 
+
+ -- Peter Van Eynde <pvaneynd@debian.org>  Sat, 12 Sep 2009 10:08:23 +0100
+
 cl-asdf (1:20090819-2) unstable; urgency=low
 
   * Fix the loop contruct. This makes ecl fail. (Closes: #545768)