diff --git src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.C src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.C
index 3f278e8..59304e7 100644
--- src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.C
+++ src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.C
@@ -505,7 +505,10 @@ void Foam::ParticleCollector<CloudType>::write()
         mass_[facei] = 0.0;
         massTotal_[facei] = 0.0;
         massFlowRate_[facei] = 0.0;
+        collectedParticles0_[facei] = collectedParticles_[facei];
+        collectedParticles_[facei].clear();
     }
+
 }
 
 
@@ -543,7 +546,9 @@ Foam::ParticleCollector<CloudType>::ParticleCollector
     log_(this->coeffDict().lookup("log")),
     outputFilePtr_(),
     timeOld_(owner.mesh().time().value()),
-    hitFaceIDs_()
+    hitFaceIDs_(),
+    collectedParticles_(),
+    collectedParticles0_()
 {
     normal_ /= mag(normal_);
 
@@ -594,6 +599,8 @@ Foam::ParticleCollector<CloudType>::ParticleCollector
     mass_.setSize(faces_.size(), 0.0);
     massTotal_.setSize(faces_.size(), 0.0);
     massFlowRate_.setSize(faces_.size(), 0.0);
+    collectedParticles_.setSize(faces_.size());
+    collectedParticles0_.setSize(faces_.size());
 
     makeLogFile(faces_, points_, area_);
 }
@@ -626,7 +633,9 @@ Foam::ParticleCollector<CloudType>::ParticleCollector
     log_(pc.log_),
     outputFilePtr_(),
     timeOld_(0.0),
-    hitFaceIDs_()
+    hitFaceIDs_(),
+    collectedParticles_(pc.collectedParticles_),
+    collectedParticles0_(pc.collectedParticles0_)
 {}
 
 
@@ -709,9 +718,29 @@ void Foam::ParticleCollector<CloudType>::postMove
             }
         }
 
-        // Add mass contribution
-        mass_[facei] += m;
+        // If not previously collected, add mass contribution
+        Switch previouslyCollected = false;
+        forAll(collectedParticles0_[facei],i)
+        {
+            if (&p == collectedParticles0_[facei][i] )
+            {
+                previouslyCollected = true;
+                break;
+            }
+        }
+        forAll(collectedParticles_[facei],i)
+        {
+            if (&p == collectedParticles_[facei][i] )
+            {
+                previouslyCollected = true;
+                break;
+            }
+        }
+        if(!previouslyCollected)
+        {
+            collectedParticles_[facei].append(&p);
 
+            mass_[facei] += m;
             if (nSector_ == 1)
             {
                 mass_[facei + 1] += m;
@@ -725,6 +754,7 @@ void Foam::ParticleCollector<CloudType>::postMove
             }
         }
     }
+}
 
 
 // ************************************************************************* //
diff --git src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.H src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.H
index d14195a..ebe1512 100644
--- src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.H
+++ src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleCollector/ParticleCollector.H
@@ -200,6 +200,12 @@ private:
         //- Work list to store which faces are hit
         mutable DynamicList<label> hitFaceIDs_;
 
+        //- Work list to store which particles are collected at current time step
+        List<DynamicList<typename CloudType::parcelType*>> collectedParticles_;
+
+        //- Work list to store which particles are collected at previous time step
+        List<DynamicList<typename CloudType::parcelType*>> collectedParticles0_;
+
 
     // Private Member Functions
 
