anchor.diff:  /obj/machinery/mineral/unloading_machine/New()
   	..()
   	spawn( 5 )
  -		src.input = locate(/obj/machinery/mineral/input, get_step(src, SOUTH))
  -		src.output = locate(/obj/machinery/mineral/output, get_step(src, NORTH))
  +		for (var/dir in cardinal)
  +			src.input = locate(/obj/machinery/mineral/input, get_step(src, dir))
  +			if(src.input) break
  +		for (var/dir in cardinal)
  +			src.output = locate(/obj/machinery/mineral/output, get_step(src, dir))
  +			if(src.output) break
   		processing_items.Add(src)
   		return
   	return
  
positive.code: /obj/machinery/mineral/processing_unit/New()
  	..()
  	spawn( 5 )
  		src.input = locate(/obj/machinery/mineral/input, get_step(src, NORTH))
  		src.output = locate(/obj/machinery/mineral/output, get_step(src, SOUTH))
  		processing_items.Add(src)
  		return
  	return
  
negative.code: 		while (locate(/obj/item, input.loc))
  			O = locate(/obj/item, input.loc)
  			if (istype(O,/obj/item/stack/sheet/metal))
  				ore_iron+= O:amount;
  				del(O)
  				continue
  			if (istype(O,/obj/item/stack/sheet/diamond))
  				ore_diamond+= O:amount;
  				del(O)
  				continue
  			if (istype(O,/obj/item/stack/sheet/plasma))
  				ore_plasma+= O:amount
  				del(O)
  				continue
  			if (istype(O,/obj/item/stack/sheet/gold))
  				ore_gold+= O:amount
  				del(O)
  				continue
  			if (istype(O,/obj/item/stack/sheet/silver))
  				ore_silver+= O:amount
  				del(O)
  				continue
  			if (istype(O,/obj/item/stack/sheet/clown))
  				ore_clown+= O:amount
  				del(O)
  				continue
  			if (istype(O,/obj/item/stack/sheet/glass))
  				ore_glass+= O:amount
  				del(O)
  				continue
  			if (istype(O,/obj/item/stack/sheet/rglass))
  				ore_rglass+= O:amount
  				del(O)
  				continue
  			if (istype(O,/obj/item/stack/sheet/r_metal))
  				ore_steel+= O:amount
  				del(O)
  				continue
  			if (istype(O,/obj/item/weapon/ore/slag))
  