diff --git a/include/teqp/algorithms/critical_tracing.hpp b/include/teqp/algorithms/critical_tracing.hpp
index 752fc3dd73ae55b1c090145b58fa427706b633bd..f4e311edc0c14fc5a6b481b89cd7f10e901c776d 100644
--- a/include/teqp/algorithms/critical_tracing.hpp
+++ b/include/teqp/algorithms/critical_tracing.hpp
@@ -170,7 +170,7 @@ struct CriticalTracing {
         fcn_t wrapper = [&rhovecmcx, &v0, &T, &model](const MultiComplex<double>& sigma_1) {
             Eigen::Vector<MultiComplex<double>, Eigen::Dynamic> rhovecused = rhovecmcx + sigma_1 * v0;
             auto rhotot = rhovecused.sum();
-            auto molefrac = rhovecused / rhotot;
+            auto molefrac = (rhovecused / rhotot).eval();
             return model.alphar(T, rhotot, molefrac) * model.R(molefrac) * T * rhotot;
         };
         auto psir_derivs_ = diff_mcx1(wrapper, 0.0, 4, true);