diff --git a/src/lagrangian/basic/Cloud/Cloud.H b/src/lagrangian/basic/Cloud/Cloud.H
index f0ca222d91021d7e69846ed0cb9e05ff92bfa3af..e298affe7d2ce5651ce34015672c8f45688d858e 100644
--- a/src/lagrangian/basic/Cloud/Cloud.H
+++ b/src/lagrangian/basic/Cloud/Cloud.H
@@ -78,6 +78,9 @@ class Cloud
         const unallocLabelList& owner_;
         const unallocLabelList& neighbour_;
 
+        //- Temporary storage for addressing. Used in findFaces.
+        mutable DynamicList<label> labels_;
+
 
     // Private member functions
 
diff --git a/src/lagrangian/basic/Particle/Particle.C b/src/lagrangian/basic/Particle/Particle.C
index ea53ec3ee4d92165ee03861a86dfb96a4b65e4e7..ee85abda689f5a1110a9b7c6b9a7ff90ced46d12 100644
--- a/src/lagrangian/basic/Particle/Particle.C
+++ b/src/lagrangian/basic/Particle/Particle.C
@@ -36,16 +36,17 @@ License
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 template<class ParticleType>
-Foam::labelList Foam::Particle<ParticleType>::findFaces
+void Foam::Particle<ParticleType>::findFaces
 (
-    const vector& position
+    const vector& position,
+    DynamicList<label>& faceList
 ) const
 {
     const polyMesh& mesh = cloud_.polyMesh_;
     const labelList& faces = mesh.cells()[celli_];
     const vector& C = mesh.cellCentres()[celli_];
 
-    DynamicList<label> faceList(10);
+    faceList.clear();
     forAll(faces, i)
     {
         label facei = faces[i];
@@ -56,26 +57,23 @@ Foam::labelList Foam::Particle<ParticleType>::findFaces
             faceList.append(facei);
         }
     }
-
-    faceList.shrink();
-
-    return faceList;
 }
 
 
 template<class ParticleType>
-Foam::labelList Foam::Particle<ParticleType>::findFaces
+void Foam::Particle<ParticleType>::findFaces
 (
     const vector& position,
     const label celli,
-    const scalar stepFraction
+    const scalar stepFraction,
+    DynamicList<label>& faceList
 ) const
 {
     const polyMesh& mesh = cloud_.polyMesh_;
     const labelList& faces = mesh.cells()[celli];
     const vector& C = mesh.cellCentres()[celli];
 
-    DynamicList<label> faceList(10);
+    faceList.clear();
     forAll(faces, i)
     {
         label facei = faces[i];
@@ -86,10 +84,6 @@ Foam::labelList Foam::Particle<ParticleType>::findFaces
             faceList.append(facei);
         }
     }
-
-    faceList.shrink();
-
-    return faceList;
 }
 
 
@@ -237,7 +231,8 @@ Foam::scalar Foam::Particle<ParticleType>::trackToFace
 {
     const polyMesh& mesh = cloud_.polyMesh_;
 
-    labelList faces = findFaces(endPosition);
+    DynamicList<label>& faces = cloud_.labels_;
+    findFaces(endPosition, faces);
 
     facei_ = -1;
     scalar trackFraction = 0.0;
diff --git a/src/lagrangian/basic/Particle/Particle.H b/src/lagrangian/basic/Particle/Particle.H
index 4d1a8b9be839f7e92cd31ce2dc6ca7acf227b81a..f061c06b68b96fedb4963264187faed12d614d5e 100644
--- a/src/lagrangian/basic/Particle/Particle.H
+++ b/src/lagrangian/basic/Particle/Particle.H
@@ -151,18 +151,20 @@ protected:
             const label facei
         ) const;
 
-        //- Return the faces between position and cell centre
-        labelList findFaces
+        //- Find the faces between position and cell centre
+        void findFaces
         (
-            const vector& position
+            const vector& position,
+            DynamicList<label>& faceList
         ) const;
 
-        //- Return the faces between position and cell centre
-        labelList findFaces
+        //- Find the faces between position and cell centre
+        void findFaces
         (
             const vector& position,
             const label celli,
-            const scalar stepFraction
+            const scalar stepFraction,
+            DynamicList<label>& faceList
         ) const;
 
 
diff --git a/src/lagrangian/basic/Particle/ParticleI.H b/src/lagrangian/basic/Particle/ParticleI.H
index ce790d67c11258c29290dbaa14f31d8669a6a6e7..0eb891271730376021b36f0e743f7de08986e84b 100644
--- a/src/lagrangian/basic/Particle/ParticleI.H
+++ b/src/lagrangian/basic/Particle/ParticleI.H
@@ -236,7 +236,8 @@ inline scalar Particle<ParticleType>::lambda
 template<class ParticleType>
 inline bool Particle<ParticleType>::inCell() const
 {
-    labelList faces = findFaces(position_);
+    DynamicList<label>& faces = cloud_.labels_;
+    findFaces(position_, faces);
 
     return (!faces.size());
 }
@@ -250,7 +251,8 @@ inline bool Particle<ParticleType>::inCell
     const scalar stepFraction
 ) const
 {
-    labelList faces = findFaces(position, celli, stepFraction);
+    DynamicList<label>& faces = cloud_.labels_;
+    findFaces(position, celli, stepFraction, faces);
 
     return (!faces.size());
 }