     {
         resolveVirtualSetters();
         filterProgramInPlace(updateProgram, virtualGetResolver);
+        filterProgramInPlace(updateProgram, new Max0SpanSetters());
         if (rounding)
         {
             filterProgramInPlace(updateProgram, new RoundSetters());

    public function filterMultiplyNode(n:Multiply):ASTNode { return n; }
    public function filterDivideNode(n:Divide):ASTNode { return n; }
    public function filterRoundNode(n:Round):ASTNode { return n; }
    public function filterGetRuntimePropNode(n:GetRuntimeProp):ASTNode { return n; }
    public function filterSetRuntimePropNode(n:SetRuntimeProp):ASTNode { return n; }
    public function filterGetVirtualPropNode(n:GetVirtualProp):ASTNode { return n; }

}


class Max0 implements ASTNode
{
    public var child:ASTNode;

    public function Max0(child:ASTNode)
    {
        this.child = child;
    }

    public function eval():*
    {
        var e:* = child.eval();
        return e > 0 ? e : 0;
    }

    public function acceptFilter(filter:ASTFilter):ASTNode
    {
        return filter.filterMax0Node(this);
    }

    public function filterChildren(filter:ASTFilter):void
    {
        child = filter.filter(child);
    }
}


class GetRuntimeProp implements ASTNode
{
    public var object:Object;
