diff -r d8bda98fcbbe tg/controllers/decoratedcontroller.py
--- a/tg/controllers/decoratedcontroller.py	Sun Sep 27 02:34:04 2009 -0600
+++ b/tg/controllers/decoratedcontroller.py	Sun Sep 27 08:40:39 2009 -0400
@@ -81,7 +81,7 @@
             controller.decoration.run_hooks('before_validate', remainder,
                                             params)
 
-            validate_params = self._get_params_with_argspec(controller, params, remainder)
+            validate_params, remainder = self._get_params_with_argspec(controller, params, remainder)
 
             for ignore in config.get('ignore_parameters', []):
                 if params.get(ignore):
diff -r d8bda98fcbbe tg/controllers/dispatcher.py
--- a/tg/controllers/dispatcher.py	Sun Sep 27 02:34:04 2009 -0600
+++ b/tg/controllers/dispatcher.py	Sun Sep 27 08:40:39 2009 -0400
@@ -105,8 +105,8 @@
             for i, var in enumerate(argvars):
                 if i >= len(remainder):
                     break
-                params[var] = remainder[i]
-        return params
+                params[var] = remainder.pop(i)
+        return params, remainder
 
     def _remove_argspec_params_from_params(self, func, params, remainder):
         """Remove parameters from the argument list that are

