diff --git a/include/teqp/algorithms/VLE.hpp b/include/teqp/algorithms/VLE.hpp
index 6b47ed24aea4729801568085c4b2c34ed0450df4..70050a45717ae8bfc99504dcb7271101fb2e3292 100644
--- a/include/teqp/algorithms/VLE.hpp
+++ b/include/teqp/algorithms/VLE.hpp
@@ -277,7 +277,7 @@ auto get_pure_critical_conditions_Jacobian(const Model& model, const Scalar T, c
 template<typename Model, typename Scalar, ADBackends backend = ADBackends::autodiff>
 auto solve_pure_critical(const Model& model, const Scalar T0, const Scalar rho0, const nlohmann::json& flags = {}) {
     auto x = (Eigen::ArrayXd(2) << T0, rho0).finished();
-    int maxsteps = (flags.contains("maxsteps")) ? flags.at("maxsteps") : 10;
+    int maxsteps = (flags.contains("maxsteps")) ? flags.at("maxsteps").get<int>() : 10;
     for (auto counter = 0; counter < maxsteps; ++counter) {
         auto [resids, Jacobian] = get_pure_critical_conditions_Jacobian<Model, Scalar, backend>(model, x[0], x[1]);
         auto v = linsolve(Jacobian, -resids);