 }
 
 
+class Max0SpanSetters extends ASTFilter
+{
+    override public function filterSetRuntimePropNode(n:SetRuntimeProp):ASTNode
+    {
+        if (n.prop == "width" || n.prop == "height")
+        {
+            return new SetRuntimeProp(n.object, n.prop, new Max0(n.child));
+        }
+        else
+        {
+            return n;
+        }
+    }
+}
+
+
 class RoundSetters extends ASTFilter
 {
     public override function filterSetRuntimePropNode(n:SetRuntimeProp):ASTNode

    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; }

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