diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 5be8c938f3e..03b0172c959 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -278,9 +278,11 @@
if(src == user.loc)
to_chat(user, "You can not [welded?"unweld":"weld"] the locker from inside.")
return
- if(!WT.remove_fuel(0,user))
+ if(!WT.remove_fuel(0, user))
to_chat(user, "You need more welding fuel to complete this task.")
return
+ if(!do_after_once(user, 15, target = src))
+ return
welded = !welded
update_icon()
for(var/mob/M in viewers(src))
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index 8cf0f52d847..239cb71328e 100755
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -177,7 +177,9 @@
var/obj/structure/closet/crate/O = target
if(O.opened)
return
- if(use(3))
+ if(amount >= 3 && do_after_once(user, 15, target = target))
+ if(O.opened || !use(3))
+ return
var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc))
P.icon_state = "deliverycrate"
P.wrapped = O
@@ -189,7 +191,9 @@
var/obj/structure/closet/O = target
if(O.opened)
return
- if(use(3))
+ if(amount >= 3 && do_after_once(user, 15, target = target))
+ if(O.opened || !use(3))
+ return
var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc))
P.wrapped = O
P.init_welded = O.welded