Index: kernel/src/optimizers/states/CMMLogOptimizerState.cpp
===================================================================
--- kernel/src/optimizers/states/CMMLogOptimizerState.cpp	(revision 404)
+++ kernel/src/optimizers/states/CMMLogOptimizerState.cpp	(working copy)
@@ -25,14 +25,20 @@
 void CMMLogOptimizerState::update()
 {
   if (skip_steps_ == 0 || (call_number_ % skip_steps_) == 0) {
-    char buf[1000];
-    sprintf(buf, filename_.c_str(), file_number_);
-    ++file_number_;
-    write(buf);
+    write_next_file();
   }
   ++call_number_;
 }
 
+void CMMLogOptimizerState::write_next_file()
+{
+  char buf[1000];
+  sprintf(buf, filename_.c_str(), file_number_);
+  ++file_number_;
+  write(buf);
+}
+
+
 void CMMLogOptimizerState::write(std::string buf) const
 {
   std::ofstream out(buf.c_str());
Index: kernel/src/optimizers/states/VRMLLogOptimizerState.cpp
===================================================================
--- kernel/src/optimizers/states/VRMLLogOptimizerState.cpp	(revision 404)
+++ kernel/src/optimizers/states/VRMLLogOptimizerState.cpp	(working copy)
@@ -25,14 +25,19 @@
 void VRMLLogOptimizerState::update()
 {
   if (skip_steps_ == 0 || (call_number_ % skip_steps_) == 0) {
-    char buf[1000];
-    sprintf(buf, filename_.c_str(), file_number_);
-    ++file_number_;
-    write(buf);
+    write_next_file();
   }
   ++call_number_;
 }
 
+void VRMLLogOptimizerState::write_next_file()
+{
+  char buf[1000];
+  sprintf(buf, filename_.c_str(), file_number_);
+  ++file_number_;
+  write(buf);
+}
+
 void VRMLLogOptimizerState::write(std::string buf) const
 {
   std::ofstream out(buf.c_str());
Index: kernel/include/IMP/optimizers/states/VRMLLogOptimizerState.h
===================================================================
--- kernel/include/IMP/optimizers/states/VRMLLogOptimizerState.h	(revision 404)
+++ kernel/include/IMP/optimizers/states/VRMLLogOptimizerState.h	(working copy)
@@ -70,9 +70,12 @@
   void set_particles(const Particles &pis) {
     pis_=pis;
   }
+  //! Force it to write the next file
+  void write_next_file();
+
   void write(std::string name) const;
 
-  //! A helper function to just write a list of particles to a file
+ //! A helper function to just write a list of particles to a file
   static void write(const Particles &pis,
                     FloatKey radius, FloatKey r,
                     FloatKey g, FloatKey b,
Index: kernel/include/IMP/optimizers/states/CMMLogOptimizerState.h
===================================================================
--- kernel/include/IMP/optimizers/states/CMMLogOptimizerState.h	(revision 404)
+++ kernel/include/IMP/optimizers/states/CMMLogOptimizerState.h	(working copy)
@@ -69,6 +69,10 @@
   void set_particles(const Particles &pis) {
     pis_=pis;
   }
+
+  //! force it to write the next file
+  void write_next_file();
+
   void write(std::string name) const;
 
   //! A helper function to just write a list of particles to a file