       body.push     new Assign new Literal(name), new Literal nvar or ivar if name
     else
       varPart     = "#{idt1}#{namePart};\n" if namePart
+      if forPart and name is ivar
+        unstepPart = if @step then "\n#{name} -= #{ @step.compile(o) };" else "\n#{name}--;"
     if @object
       forPart     = "#{ivar} in #{sourcePart}"
       guardPart   = "\n#{idt1}if (!#{utility('hasProp')}.call(#{svar}, #{ivar})) continue;" unless @raw  

    """
    #{resultPart}#{@tab}for (#{forPart}) {#{guardPart}
    #{varPart}#{body}
    #{@tab}}#{returnResult}
    """

#### Switch

    nvar          = scope.freeVariable 'i' if name and not range and codeInBody
    varPart       = ''
    guardPart     = ''
    unstepPart    = ''
    body          = Expressions.wrap([@body])
    idt1          = @idt 1
    if range
