diff --git a/css/main.css b/css/main.css
index b1ef03a8e609293c697e5187b834095f0f5c6399..a50982c9d7e3cf262f895c931f404675fcea6d57 100644
--- a/css/main.css
+++ b/css/main.css
@@ -177,6 +177,12 @@ hr {
     background-color: rgba(255, 255, 0, 0.35);
 }
 
+#postWarning {
+    background-color: rgba(255,0,0,0.15);
+    padding: 10px 15px 15px 15px;
+    margin: 20px 0;
+}
+
 input.numberInput{
     width:22%;
     display: inline;
diff --git a/js/cam/Assembler.js b/js/cam/Assembler.js
index 5a147cf91e2108752a8f64f9dc7140cc4bdfb034..91dd96c621b36f2210bf21547492afe5e69e7065 100644
--- a/js/cam/Assembler.js
+++ b/js/cam/Assembler.js
@@ -201,6 +201,7 @@ Assembler = Backbone.Model.extend({
         data += exporter.makeFooter();
 
         this.set("dataOut", data);
+        this.set("editsMadeToProgram", false);
         this.set("exporter", exporter);
         this.set("simLineNumber", 0);
         return {data:data, exporter:exporter};
diff --git a/js/menus/AnimationMenuView.js b/js/menus/AnimationMenuView.js
index 006fd058731eee730e4dbbb27835e1e5b1b106a3..ccf8328e8ef28257445a7d420b634467a755ba75 100644
--- a/js/menus/AnimationMenuView.js
+++ b/js/menus/AnimationMenuView.js
@@ -12,7 +12,7 @@ AnimationMenuView = Backbone.View.extend({
         "click #pauseStockSim":                                     "_pauseStockSim",
         "click #resetStockSim":                                     "_resetStockSim",
         "click #saveSendMenu":                                      "_save",
-        "click #overrideEdits":                                     "_postProcess",
+        "click .overrideEdits":                                     "_postProcess",
         "slideStop #speedSlider":                                   "_changeSpeedSlider"
     },
 
@@ -44,10 +44,10 @@ AnimationMenuView = Backbone.View.extend({
     },
 
     _codeEdit: function(e){
-        var textarea = $("#gcodeEditor");
-        if (!textarea.is(":focus")) return;
+        var editor = $("#gcodeEditor");
+        if (!editor.is(":focus")) return;
         e.preventDefault();
-        dmaGlobals.assembler.makeProgramEdits(textarea.val());
+        dmaGlobals.assembler.makeProgramEdits(editor.text());
     },
 
     _playStockSim: function(e){
@@ -91,7 +91,7 @@ AnimationMenuView = Backbone.View.extend({
 
     render: function(){
         if (this.model.get("currentTab") != "animate") return;
-        if (dmaGlobals.assembler.get("needsPostProcessing")) dmaGlobals.assembler.postProcess();
+        if (dmaGlobals.assembler.get("needsPostProcessing") && !dmaGlobals.assembler.get("editsMadeToProgram")) dmaGlobals.assembler.postProcess();
         this.$el.html(this.template(_.extend(this.model.toJSON(), dmaGlobals.assembler.toJSON())));
         if (!dmaGlobals.appState.get("stockSimulationPlaying")) this._drawGcodeHighlighter();//in case of code pause
 
@@ -117,9 +117,13 @@ AnimationMenuView = Backbone.View.extend({
         <% } %>\
         <input id="speedSlider" data-slider-id="speedSlider" type="text" data-slider-min="1" data-slider-max="10" data-slider-step="1" data-slider-value="<%= simSpeed %>"/>\
         <br/><a href="#" id="saveSendMenu" class=" btn btn-block btn-lg btn-default">Save</a><br/>\
-        Assembly Time:&nbsp;&nbsp;<br/><br/>\
+        Assembly Time:&nbsp;&nbsp;<br/>\
+        <% if (editsMadeToProgram && needsPostProcessing){ %>\
+        <div id="postWarning">You have made the following changes that require post processing:<br/>\
+        This will override edits you have made to the G-code.  OK to override? <a href="#" class="overrideEdits btn btn-block btn-lg btn-danger">OK</a></div>\
+        <% } %>\
         <div id="gcodeEditor" contenteditable><%= dataOut %></div><br/>\
-        <a href="#" id="overrideEdits" class=" btn btn-block btn-lg btn-default">Undo Changes</a><br/>\
+        <a href="#" class="overrideEdits btn btn-block btn-lg btn-default">Undo Changes</a><br/>\
         ')
 
 });