diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/patchInjectionBase.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/patchInjectionBase.C
index b1bd72bdaadb7d9b0dbd0f415f5e52dd9755c4db..293010fd137b43c7219ed3291e17b6c6b396cec7 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/patchInjectionBase.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/patchInjectionBase.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2016 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2017 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -201,16 +201,26 @@ void Foam::patchInjectionBase::setPositionAndCell
             // Position perturbed away from face (into domain)
             const scalar a = rnd.position(scalar(0.1), scalar(0.5));
             const vector& pc = mesh.cellCentres()[cellOwner];
-            const vector d = mag(pf - pc)*patchNormal_[facei];
+            const vector d =
+                mag((pf - pc) & patchNormal_[facei])*patchNormal_[facei];
 
             position = pf - a*d;
 
-            //Try to find tetFacei and tetPti in the current position
+            // Try to find tetFacei and tetPti in the current position
             mesh.findTetFacePt(cellOwner, position, tetFacei, tetPti);
 
-            //Search failed, choose a random position
+            // tetFacei and tetPti not found, check if the cell has changed
             if (tetFacei == -1 ||tetPti == -1)
             {
+                mesh.findCellFacePt(position, cellOwner, tetFacei, tetPti);
+            }
+
+            // Both searches failed, choose a random position within
+            // the original cell
+            if (tetFacei == -1 ||tetPti == -1)
+            {
+                // Reset cellOwner
+                cellOwner = cellOwners_[facei];
                 const scalarField& V = mesh.V();
 
                 // Construct cell tet indices