Index: coops.scm
===================================================================
--- coops.scm	(revision 26776)
+++ coops.scm	(working copy)
@@ -372,21 +372,23 @@
 				 (lambda (%before-method)
 				   (apply %before-method %args))
 				 %applicable-before-methods)
-				(let ((%res
+				(call-with-values
+				     (lambda ()
 				       (apply
 					(let
 					    ((m (car %applicable-primary-methods)))
 					  (set! %applicable-primary-methods
-					    (cdr %applicable-primary-methods))
+						(cdr %applicable-primary-methods))
 					  m)
 					%next-method?
 					%call-next-method
-					%args)))
-				  (for-each
-				   (lambda (%after-method)
-				     (apply %after-method %args))
-				   %applicable-after-methods)
-				  %res))))))
+					%args))
+				   (lambda (#!rest %res)
+				     (for-each
+				      (lambda (%after-method)
+					(apply %after-method %args))
+				      %applicable-after-methods)
+				     (apply values %res))))))))
 		   (%call-next-method))))))
 	 (cond-expand
 	   (no-cache
