diff --git a/CHANGES/v2.3.md b/CHANGES/v2.3.md
index 856c2d2bcbb95a4f90513b1fad97ea5133ee436b..32018f88891aecd885abcbae9c08a73e3fde6d1b 100644
--- a/CHANGES/v2.3.md
+++ b/CHANGES/v2.3.md
@@ -252,4 +252,5 @@ For developers:
 
 For users:
 - Fixed flag DETAILED_TIMERS in \ref DEBUG (flag was ignored and detailed timers always written).
+- Small fix in \ref DUMPMASSCHARGE (atoms are now correctly requested only at first step).
 
diff --git a/src/generic/DumpMassCharge.cpp b/src/generic/DumpMassCharge.cpp
index 890878c5fc11696149196933753d8d6b22a88e32..69ff45de60195d1a9efb09905d57eab7035f0d21 100644
--- a/src/generic/DumpMassCharge.cpp
+++ b/src/generic/DumpMassCharge.cpp
@@ -95,10 +95,12 @@ class DumpMassCharge:
 {
   string file;
   bool first;
+  bool second;
 public:
   explicit DumpMassCharge(const ActionOptions&);
   ~DumpMassCharge();
   static void registerKeywords( Keywords& keys );
+  void prepare();
   void calculate() {}
   void apply() {}
   void update();
@@ -119,7 +121,8 @@ DumpMassCharge::DumpMassCharge(const ActionOptions&ao):
   Action(ao),
   ActionAtomistic(ao),
   ActionPilot(ao),
-  first(true)
+  first(true),
+  second(true)
 {
   vector<AtomNumber> atoms;
   parse("FILE",file);
@@ -141,6 +144,13 @@ DumpMassCharge::DumpMassCharge(const ActionOptions&ao):
   requestAtoms(atoms);
 }
 
+void DumpMassCharge::prepare() {
+  if(!first && second) {
+    requestAtoms(vector<AtomNumber>());
+    second=false;
+  }
+}
+
 void DumpMassCharge::update() {
   if(!first) return;
   first=false;