diff --git a/js/models/AppState.js b/js/models/AppState.js
index 0a4a7c1c0ef649ba6ded2db28573979c3c76cfab..a1271a8e2c3d843f89bfe7a310d27226f991fd9b 100644
--- a/js/models/AppState.js
+++ b/js/models/AppState.js
@@ -157,7 +157,7 @@ define(['underscore', 'backbone', 'threeModel', 'three', 'plist', 'globals'], fu
                 this.downKeys[e.keyCode] = true;
             } else this.downKeys[e.keyCode] = false;
 
-    //        console.log(e);
+//            console.log(e);
 //            console.log(e.keyCode);
             switch(e.keyCode){
                 case 8://delete key - causes back nav in chrome, super annoying
@@ -230,6 +230,18 @@ define(['underscore', 'backbone', 'threeModel', 'three', 'plist', 'globals'], fu
                 case 90://z - decrease supercell index
                     if (state) this.set("superCellIndex", this._decrementSuperCellIndex("z", this.get("superCellIndex").clone()));
                     break;
+                case 38://up arrow
+                    if (!state || this.get("currentNav") != "electronicNavSim") return;
+                    require(['eSim'], function(eSim){
+                        eSim.setZSimHeight(eSim.get("simZHeight")+1);
+                    });
+                    break;
+                case 40://down arrow
+                    if (!state || this.get("currentNav") != "electronicNavSim") return;
+                    require(['eSim'], function(eSim){
+                        eSim.setZSimHeight(eSim.get("simZHeight")-1);
+                    });
+                    break;
                 default:
                     break;
             }
diff --git a/js/simulation/electronics/LatticeEsim.js b/js/simulation/electronics/LatticeEsim.js
index 7df2d321cbace281787d0e8aa2fd421974f926bd..54724a795d20c6a2c1ccaed418cbd9eec4012139 100644
--- a/js/simulation/electronics/LatticeEsim.js
+++ b/js/simulation/electronics/LatticeEsim.js
@@ -188,8 +188,7 @@ define(['lattice', 'appState', 'three', 'threeModel', 'numeric', 'eSim', 'eSimFi
             } else {
                 eSim.set("chargeField", new ESimField(chargeMat, offset, resolution, eSim.get("simZHeight"), dataRange));
             }
-            eSim.set("visibleStaticSim", "chargeField");//will cause render
-//            -10*(P15+Q14+R15+Q16-4*Q15)
+//            eSim.set("visibleStaticSim", "chargeField");//will cause render
 
         },
 
diff --git a/js/simulation/electronics/eSim.js b/js/simulation/electronics/eSim.js
index e66f1a794adb699fd71f923089289b4b9f74bd27..b72432b145cd20e5a141c4de5d4a7436a7151a6c 100644
--- a/js/simulation/electronics/eSim.js
+++ b/js/simulation/electronics/eSim.js
@@ -35,6 +35,12 @@ define(['underscore', 'backbone', 'threeModel'], function(_, Backbone, three){
 
         },
 
+        setZSimHeight: function(height){
+            if (height < 0) return;
+            var field = this.get(this.get("visibleStaticSim"));
+            if (field && height<field.getMaxHeight()) this.set("simZHeight", height);
+        },
+
         _hideAllFields: function(){
             if (this.get("rawPotentialField")) this.get("rawPotentialField").hide();
             if (this.get("potentialField")) this.get("potentialField").hide();
diff --git a/js/simulation/electronics/eSimField.js b/js/simulation/electronics/eSimField.js
index 7659963b727943fb994ef72da222357273f8a0de..802f3a5a5473e8313a977f7e02d484a5641c9809 100644
--- a/js/simulation/electronics/eSimField.js
+++ b/js/simulation/electronics/eSimField.js
@@ -30,6 +30,11 @@ define(['underscore', 'threeModel'], function(_, three){
         this._threeObjects = this._createThreeObjects(data, offset, 1/resolution, height, this._object3D);
     };
 
+    ESimField.prototype.getMaxHeight = function(){
+        if (!this._data) return 0;
+        return this._data[0][0].length;
+    };
+
     ESimField.prototype._setObject3DPosition = function(offset, resolution, height){
         this._object3D.position.set(offset.x, offset.y, offset.z+height/resolution);
     };