Is the electric garage door open?
Lua, 258 248 242 bytes
u,s,p=1&gt;0,0&gt;1,0;io.read():gsub(&quot;%d+&quot;,function(a)if(not s)then p=u and p+a or p-a;if(p&gt;=10 or p&lt;=0)then s,p=1&gt;0,p&gt;0 and 10 or 0;end;u,s=not u,not s else s=0&gt;1;end end)if(not s)then p=u and 10 or 0;u=not u;end;print(10*p..&quot;% &quot;..(u and&quot;U&quot;or&quot;D&quot;))

Ungolfed
u,s,p=true,false,0;                          -- Up direction, Stopped, Position
io.read():gsub(&quot;%d+&quot;,function(t)             -- For each number in input
    if(not s)then                            -- If door wasn't stopped
        p=u and p+t or p-t;                  -- Position = Moving up ? +t : -t
        if(p&gt;=10 or p&lt;=0)then                -- If door fully opened or closed
            s,p=true,p&gt;0 and 10 or 0;        -- Then door stopped at 0 or 10
        end 
        u,s=not u,not s;                     -- Toggle direction and toggle stopped
    else 
        s=false;                             -- If stopped, nothing happened, un-stop.
    end 
end)
-------------------- Done pressing the button --------------------
if(not s)then                                -- If left off moving
    p=u and 10 or 0;                         -- Finish movement
    u=not u;                                 -- Toggle direction
end 
print(10*p..&quot;% &quot;..(u and&quot;U&quot;or&quot;D&quot;))           -- Output answer

I don't see how your test cases can be right...
20 20 -- Initial push, after 20, garage is at 100, push to start it down, after 20, garage is at 0, push to start it up, garage finishes up.
10 10 -- Same as above
1 2 3 -- 0 U Moving, wait 1, 1 D Stopped, wait 2, 0 U stopped, wait 3, 100 D stopped

 OP Fixed