diff --git a/applications/reconstruct/src/ilw/ilw.cpp b/applications/reconstruct/src/ilw/ilw.cpp
index 973a162e6249588c7a935fb4200ac750f275972f..1148762a3b37522da9056d444b684aa7aa35b6e4 100644
--- a/applications/reconstruct/src/ilw/ilw.cpp
+++ b/applications/reconstruct/src/ilw/ilw.cpp
@@ -16,6 +16,7 @@ using cv::cuda::GpuMat;
 ILW::ILW(nlohmann::json &config) : ftl::Configurable(config) {
     enabled_ = value("ilw_align", true);
     iterations_ = value("iterations", 1);
+    motion_rate_ = value("motion_rate", 0.4f);
 
     on("ilw_align", [this](const ftl::config::Event &e) {
         enabled_ = value("ilw_align", true);
@@ -25,6 +26,10 @@ ILW::ILW(nlohmann::json &config) : ftl::Configurable(config) {
         iterations_ = value("iterations", 1);
     });
 
+    on("motion_rate", [this](const ftl::config::Event &e) {
+        motion_rate_ = value("motion_rate", 0.4f);
+    });
+
     flags_ = 0;
     if (value("ignore_bad", false)) flags_ |= ftl::cuda::kILWFlag_IgnoreBad;
     if (value("restrict_z", true)) flags_ |= ftl::cuda::kILWFlag_RestrictZ;
@@ -58,7 +63,7 @@ bool ILW::process(ftl::rgbd::FrameSet &fs, cudaStream_t stream) {
         }
         _phase1(fs, win, stream);
         //for (int j=0; j<3; ++j) {
-            _phase2(fs, 0.4f, stream);
+            _phase2(fs, motion_rate_, stream);
         //}
 
 		// TODO: Break if no time left
diff --git a/applications/reconstruct/src/ilw/ilw.hpp b/applications/reconstruct/src/ilw/ilw.hpp
index 36c2cbbc0e7c62d234dcc7e9db746a7ed7a1b66f..ce3b0979543c6f4204df9aad3b3f2d29aad14dfa 100644
--- a/applications/reconstruct/src/ilw/ilw.hpp
+++ b/applications/reconstruct/src/ilw/ilw.hpp
@@ -62,6 +62,7 @@ class ILW : public ftl::Configurable {
     bool enabled_;
     unsigned int flags_;
     int iterations_;
+    float motion_rate_;
 };
 
 }