Index: branches/release-34/lib/MT/Template/ContextHandlers.pm
===================================================================
--- branches/release-34/lib/MT/Template/ContextHandlers.pm (revision 1859)
+++ branches/release-34/lib/MT/Template/ContextHandlers.pm (revision 1862)
@@ -1349,8 +1349,13 @@
     local $args->{'@'};
     delete $args->{'@'};
-    if  ((keys %$args) == 1) {
-        my $name = $args->{name} || $args->{var} || $args->{tag} || undef;
-        $name = ($ctx->var('__name__') || undef) unless $name;
-        $args->{name} = $name if $name;
+    if  ((keys %$args) >= 1) {
+        unless ($args->{name} || $args->{var} || $args->{tag}) {
+            if ( my $t = $ctx->var('__cond_tag__') ) {
+                $args->{tag} = $t;
+            }
+            elsif ( my $n = $ctx->var('__cond_name__') ) {
+                $args->{name} = $n;
+            }
+        }
     }
     if (%$args) {
@@ -1363,6 +1368,12 @@
 sub _hdlr_elseif {
     my ($ctx, $args, $cond) = @_;
-    $args->{name} = $ctx->var('__name__')
-        unless ($args->{name} || $args->{var} || $args->{tag} || undef);
+    unless ($args->{name} || $args->{var} || $args->{tag}) {
+        if ( my $t = $ctx->var('__cond_tag__') ) {
+            $args->{tag} = $t;
+        }
+        elsif ( my $n = $ctx->var('__cond_name__') ) {
+            $args->{name} = $n;
+        }
+    }
     return _hdlr_else($ctx, $args, $cond);
 }
@@ -1412,4 +1423,5 @@
                 $value = $ph->($ctx, $args, $value);
             }
+            $ctx->{__stash}{vars}{__cond_tag__} = $args->{tag};
         }
         else {
@@ -1418,6 +1430,6 @@
     }
 
-    local $ctx->{__stash}{vars}{__cond_value__} = $value;
-    local $ctx->{__stash}{vars}{__cond_name__} = $var;
+    $ctx->{__stash}{vars}{__cond_value__} = $value;
+    $ctx->{__stash}{vars}{__cond_name__} = $var;
 
     if ( my $op = $args->{op} ) {
