diff --git a/js/cam/Assembler.js b/js/cam/Assembler.js
index bc4a713a2da73c1025c47ce14e8383058f17b7f3..8c00970e9416ac4346e2db430ba0119eb8521096 100644
--- a/js/cam/Assembler.js
+++ b/js/cam/Assembler.js
@@ -23,12 +23,16 @@ Assembler = Backbone.Model.extend({
         originPosition: new THREE.Vector3(20,0,0),
         stock: null,
         stockPosition: new THREE.Vector3(20,0,0),
+        stockArraySize: {x:3, y:3},
+        stockSeparation: 2.78388,
+        postStockNum: 0,//which piece of stock to pick up
 
         rapidSpeeds:{xy: 3, z: 2},//rapids at clearance height
         feedRate:{xy: 0.1, z: 0.1},//speed when heading towards assembly
 
         simLineNumber: 0,//used for stock simulation, reading through gcode
-        simSpeed: 4//#X times real speed
+        simSpeed: 4,//#X times real speed
+        simStockNum:0//which piece of stock to pick up
     },
 
     initialize: function(options){
@@ -145,6 +149,8 @@ Assembler = Backbone.Model.extend({
     resetSimulation: function(){
         this.set("simLineNumber", 0, {silent:true});
         dmaGlobals.appState.set("stockSimulationPlaying", false);
+        this.set("simStockNum", 0);
+        this.set("postStockNum", 0);
         dmaGlobals.lattice.showCells();
     },
 
@@ -199,7 +205,15 @@ Assembler = Backbone.Model.extend({
         var self = this;
         dmaGlobals.lattice.rasterCells(this._getOrder(this.get("camStrategy")), function(cell){
             if (!cell) return;
-            data += self._grabStock(exporter, stockPosition, rapidHeight, safeHeight);
+            var stockNum = self.get("postStockNum");
+            var stockNumPosition = {x:stockPosition.x, y:stockPosition.y, z:stockPosition.z};
+            var stockArraySize = self.get("stockArraySize");
+            stockNumPosition.x += stockNum % stockArraySize.y * self.get("stockSeparation");
+            stockNumPosition.y -= Math.floor(stockNum / stockArraySize.y) * self.get("stockSeparation");
+            data += self._grabStock(exporter, stockNumPosition, rapidHeight, safeHeight);
+            stockNum += 1;
+            if (stockNum >= stockArraySize.x*stockArraySize.y) stockNum = 0;
+            self.set("postStockNum", stockNum, {silent:true});
             data += self._placeCell(cell, exporter, rapidHeight, wcs, safeHeight);
             data += "\n";
         });