diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index 4412bff1265..75432a86da2 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -36,17 +36,22 @@
return
if(WT.remove_fuel(0,user))
- var/obj/item/stack/sheet/metal/new_item = new(usr.loc)
- new_item.add_to_stacks(usr)
+ var/obj/item/stack/sheet/metal/new_item = new(user.loc)
+ new_item.add_to_stacks(user)
+ if(new_item.get_amount() <= 0)
+ // stack was moved into another one on the pile
+ new_item = locate() in user.loc
+
user.visible_message("[user.name] shaped [src] into metal with the weldingtool.", \
"You shaped [src] into metal with the weldingtool.", \
"You hear welding.")
- var/obj/item/stack/rods/R = src
- src = null
- var/replace = (user.get_inactive_hand()==R)
- R.use(2)
- if (!R && replace)
- user.put_in_hands(new_item)
+
+ var/replace = user.get_inactive_hand() == src
+ use(2)
+ if (get_amount() <= 0 && replace)
+ user.unEquip(src, 1)
+ if(new_item)
+ user.put_in_hands(new_item)
return
..()
diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index 25694f28fc3..0e900329922 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -223,7 +223,7 @@
if(!broken && isscrewdriver(C))
user << "You unscrew the catwalk's rods."
- new /obj/item/stack/rods(src, 2)
+ new /obj/item/stack/rods(src, 1)
ReplaceWithLattice()
for(var/direction in cardinal)
var/turf/T = get_step(src,direction)