diff --git a/stock-manager.lua b/stock-manager.lua index 43ef4c8..e912b81 100644 --- a/stock-manager.lua +++ b/stock-manager.lua @@ -18,7 +18,7 @@ local SLEEP_T = 10 function remove_waste(source, discard_rest) local amounts_to_keep = KEEP_ONLY local discard = function (item, amt, dest) - peripheral.call(source, "requestFiltered", dest, + peripheral.call(source, "requestFiltered", dest { name = item.name, _requestCount = amt, @@ -29,7 +29,10 @@ function remove_waste(source, discard_rest) if amounts_to_keep[item.name] ~= nil then local excess = item.count - amounts_to_keep[item.name][1] if excess > 0 then + amounts_to_keep[item.name][1] = 0 discard(item, excess, amounts_to_keep[item.name][2]) + else + amounts_to_keep[item.name][1] = -excess end elseif DISCARD_REST then discard(item, amt, DISCARD_ADDR)