diff --git a/ChemistryLib/PhreeqcIOData/CreateEquilibriumReactants.cpp b/ChemistryLib/PhreeqcIOData/CreateEquilibriumReactants.cpp
index 01084a919f1b413117d34ca8263884e7376624e5..ab6bc617fbff0cdcf3fc31a853a99c84ac2ccbc2 100644
--- a/ChemistryLib/PhreeqcIOData/CreateEquilibriumReactants.cpp
+++ b/ChemistryLib/PhreeqcIOData/CreateEquilibriumReactants.cpp
@@ -55,7 +55,7 @@ std::vector<EquilibriumReactant> createEquilibriumReactants(
             1);
 
         equilibrium_reactants.emplace_back(
-            std::move(name), amount, saturation_index);
+            std::move(name), amount, initial_amount, saturation_index);
     }
 
     return equilibrium_reactants;
diff --git a/ChemistryLib/PhreeqcIOData/CreateKineticReactant.cpp b/ChemistryLib/PhreeqcIOData/CreateKineticReactant.cpp
index 1d3af1d9068e9bcf09fe338b4e59af810c75598e..7a7ad8886282160a77c78ec5bd538d1c9e93ecc4 100644
--- a/ChemistryLib/PhreeqcIOData/CreateKineticReactant.cpp
+++ b/ChemistryLib/PhreeqcIOData/CreateKineticReactant.cpp
@@ -71,6 +71,7 @@ std::vector<KineticReactant> createKineticReactants(
         kinetic_reactants.emplace_back(std::move(name),
                                        std::move(chemical_formula),
                                        amount,
+                                       initial_amount,
                                        std::move(parameters),
                                        fix_amount);
     }
diff --git a/ChemistryLib/PhreeqcIOData/EquilibriumReactant.h b/ChemistryLib/PhreeqcIOData/EquilibriumReactant.h
index 2926f0319fbec5171ba6104d26003c8f923b2e48..d15aa0605fe70812c1c009a0d8ea20e226a56b2c 100644
--- a/ChemistryLib/PhreeqcIOData/EquilibriumReactant.h
+++ b/ChemistryLib/PhreeqcIOData/EquilibriumReactant.h
@@ -30,9 +30,11 @@ struct EquilibriumReactant
 {
     EquilibriumReactant(std::string name_,
                         MeshLib::PropertyVector<double>* amount_,
+                        double const initial_amount_,
                         double saturation_index_)
         : name(std::move(name_)),
           amount(amount_),
+          initial_amount(initial_amount_),
           saturation_index(saturation_index_)
     {
     }
@@ -41,6 +43,7 @@ struct EquilibriumReactant
 
     std::string const name;
     MeshLib::PropertyVector<double>* amount;
+    double const initial_amount;
     double const saturation_index;
     static const ItemType item_type = ItemType::EquilibriumReactant;
 };
diff --git a/ChemistryLib/PhreeqcIOData/KineticReactant.h b/ChemistryLib/PhreeqcIOData/KineticReactant.h
index 4b659dc8bd59a4e170575bd624b94d986b4eb253..1141683e84df79c70e414b6bbd91045b1e2cae64 100644
--- a/ChemistryLib/PhreeqcIOData/KineticReactant.h
+++ b/ChemistryLib/PhreeqcIOData/KineticReactant.h
@@ -27,11 +27,13 @@ struct KineticReactant
     KineticReactant(std::string name_,
                     std::string chemical_formula_,
                     MeshLib::PropertyVector<double>* amount_,
+                    double const initial_amount_,
                     std::vector<double>&& parameters_,
                     bool const fix_amount_)
         : name(std::move(name_)),
           chemical_formula(std::move(chemical_formula_)),
           amount(amount_),
+          initial_amount(initial_amount_),
           parameters(std::move(parameters_)),
           fix_amount(fix_amount_)
     {
@@ -42,6 +44,7 @@ struct KineticReactant
     std::string const name;
     std::string const chemical_formula;
     MeshLib::PropertyVector<double>* amount;
+    double const initial_amount;
     std::vector<double> const parameters;
     bool const fix_amount;
     static const ItemType item_type = ItemType::KineticReactant;