diff --git a/src/BasicActions/Option.cpp b/src/BasicActions/Option.cpp
index bb80d744adab2da32ee70438c8133eb25bc3e20e..80fa7dd3ab00e2984d5e3bb7ab7db0b51371ed2b 100644
--- a/src/BasicActions/Option.cpp
+++ b/src/BasicActions/Option.cpp
@@ -18,6 +18,7 @@
 // along with OPAL. If not, see <https://www.gnu.org/licenses/>.
 //
 #include "BasicActions/Option.h"
+#include "AbstractObjects/OpalData.h"
 #include "Attributes/Attributes.h"
 #include "Parser/FileStream.h"
 #include "Utilities/Options.h"
@@ -65,7 +66,7 @@ namespace {
         AUTOPHASE,
         SURFDUMPFREQ,
         NUMBLOCKS,
-        RECYCLEBLOCKS,
+         RECYCLEBLOCKS,
         NLHS,
         CZERO,
         RNGTYPE,
@@ -491,6 +492,11 @@ void Option::execute() {
     if(Attributes::getBool(itsAttr[TELL])) {
         *gmsg << "\nCurrent settings of options:\n" << *this << endl;
     }
+
+    Option* main = dynamic_cast<Option*>(OpalData::getInstance()->find("OPTION"));
+    if (main) {
+        main->update(itsAttr);
+    }
 }
 
 void Option::handlePsDumpFrame(const std::string &dumpFrame) {
@@ -518,4 +524,10 @@ std::string DumpFrameToString(DumpFrame df) {
     default:
         return std::string("GLOBAL");
     }
+}
+
+void Option::update(const std::vector<Attribute>& othersAttributes) {
+    for (int i = 0; i < SIZE; ++ i) {
+        itsAttr[i] = othersAttributes[i];
+    }
 }
\ No newline at end of file
diff --git a/src/BasicActions/Option.h b/src/BasicActions/Option.h
index e88187aacd587d80d9b421fd1fd55c359c76062c..63c43ac70154d953b174a03d48728b08208159d0 100644
--- a/src/BasicActions/Option.h
+++ b/src/BasicActions/Option.h
@@ -39,6 +39,7 @@ public:
 
 private:
     void handlePsDumpFrame(const std::string &dumpFrame);
+    void update(const std::vector<Attribute>&);
 
     // Not implemented.
     Option(const Option &);