Index: patterns.module
===================================================================
--- patterns.module	(revision 560)
+++ patterns.module	(working copy)
@@ -1360,6 +1360,8 @@
     if (is_array($value)) {
       $new_array[$key] = patterns_array_map($function, $value, $params);
     } else {
+      $keyparams = array_merge(array($key), $params);
+      $key = call_user_func_array($function, $keyparams);
       $fullparams = array_merge(array($value), $params);
       $new_array[$key] = call_user_func_array($function, $fullparams);
     }
@@ -1401,7 +1403,7 @@
           $tokens = array_keys($action['parameters']);
           $values = array_values($action['parameters']);
           // using the internal replace function from the token module
-          $a = patterns_array_map('_token_replace_tokens', $a, array($tokens, $values, '[', ']'));
+          $a = patterns_array_map('_token_replace_tokens', $a, array($tokens, $values, '__', '__'));
         }
         
         // array_merge doesn't preserve numeric array keys
