diff --git a/Fltk/onelabGroup.cpp b/Fltk/onelabGroup.cpp
index 44f15125f02230dd4ae76b5dcf3ec241710c0694..9d06327281da26154a69f6d096e9de3a486b6b8a 100644
--- a/Fltk/onelabGroup.cpp
+++ b/Fltk/onelabGroup.cpp
@@ -909,16 +909,14 @@ void onelab_cb(Fl_Widget *w, void *data)
       onelab::server::instance()->set(o);
       c->run();
       if(action == "compute"){
+        // after computing with this solver, mark the parameters exclusively
+        // owned by this solver as unchanged
+        onelab::server::instance()->setChanged(false, c->getName());
 	FlGui::instance()->onelab->checkForErrors(c->getName());
       }
       if(FlGui::instance()->onelab->stop()) break;
     }
 
-    // after computing, all parameters are set unchanged
-    if(action == "compute"){
-      onelab::server::instance()->setChanged(false);
-    }
-
     if(action != "initialize"){
       updateGraphs();
       FlGui::instance()->rebuildTree(action == "compute");
@@ -927,6 +925,11 @@ void onelab_cb(Fl_Widget *w, void *data)
   } while(action == "compute" && !FlGui::instance()->onelab->stop() &&
           incrementLoops());
 
+  if(action == "compute"){
+    // the computation is done; mark all parameters as unchanged
+    onelab::server::instance()->setChanged(false);
+  }
+
   if(action == "compute" && (CTX::instance()->solver.autoSaveDatabase ||
                              CTX::instance()->solver.autoArchiveOutputFiles)){
     std::string db = SplitFileName(GModel::current()->getFileName())[0] + "onelab.db";