diff --git a/libs/ardour/insert.cc b/libs/ardour/insert.cc
index 03b56e5..d931f3a 100644
--- a/libs/ardour/insert.cc
+++ b/libs/ardour/insert.cc
@@ -166,7 +166,10 @@ PluginInsert::auto_state_changed (uint32_t which)
 {
 	AutomationList& alist (automation_list (which));
 
-	if (alist.automation_state() != Off) {
+	/* don't reset automation if we're moving to Off or Write mode;
+	   if we're moving to Write, the user may have manually set up automation
+	   that they don't want to lose */		
+	if (alist.automation_state() != Off && alist.automation_state() != Write) {
 		_plugins[0]->set_parameter (which, alist.eval (_session.transport_frame()));
 	}
 }
diff --git a/libs/ardour/panner.cc b/libs/ardour/panner.cc
index d626ec4..473354d 100644
--- a/libs/ardour/panner.cc
+++ b/libs/ardour/panner.cc
@@ -224,8 +224,11 @@ BaseStereoPanner::set_automation_state (AutoState state)
 	if (state != _automation.automation_state()) {
 
 		_automation.set_automation_state (state);
-		
-		if (state != Off) {
+
+		/* don't reset pan if we're moving to Off or Write mode;
+		   if we're moving to Write, the user may have manually set up pans
+		   that they don't want to lose */		
+		if (state != Off && state != Write) {
 			set_position (_automation.eval (parent.session().transport_frame()));
 		}
 	}
