diff --git a/src/sampling/sampledSet/cellCentre/cellCentreSet.C b/src/sampling/sampledSet/cellCentre/cellCentreSet.C
index 2631595ff1fe3e506420e5a9790c71fa0885fdfa..1c7cc4a1828ab2b6cc710918f247eb0ff2c23b30 100644
--- a/src/sampling/sampledSet/cellCentre/cellCentreSet.C
+++ b/src/sampling/sampledSet/cellCentre/cellCentreSet.C
@@ -27,6 +27,7 @@ License
 #include "meshSearch.H"
 #include "polyMesh.H"
 #include "volFields.H"
+#include "globalIndex.H"
 #include "addToRunTimeSelectionTable.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -44,6 +45,8 @@ void Foam::cellCentreSet::genSamples()
 {
     const label len = mesh().nCells();
 
+    const globalIndex globalSampleNumbers(len);
+
     const auto& cellCentres =
         refCast<const fvMesh>(mesh()).C().primitiveField();
 
@@ -70,8 +73,13 @@ void Foam::cellCentreSet::genSamples()
     }
 
     labelList samplingFaces(selectedCells.size(), -1);
-    labelList samplingSegments(selectedCells.size(), -1);
-    scalarList samplingCurveDist(selectedCells.size(), 0.0);
+    labelList samplingSegments(selectedCells.size(), 0);
+    scalarList samplingCurveDist(selectedCells.size());
+
+    forAll(selectedCells, i)
+    {
+        samplingCurveDist[i] = globalSampleNumbers.toGlobal(selectedCells[i]);
+    }
 
     // Move into *this
     setSamples
diff --git a/src/sampling/sampledSet/sampledSet/sampledSet.C b/src/sampling/sampledSet/sampledSet/sampledSet.C
index f13fce7c77ff1781ce70a48505893d0c0b054a6e..cc053293305dca8956d93f37726281867f9207a9 100644
--- a/src/sampling/sampledSet/sampledSet/sampledSet.C
+++ b/src/sampling/sampledSet/sampledSet/sampledSet.C
@@ -29,7 +29,6 @@ License
 #include "meshSearch.H"
 #include "writer.H"
 #include "particle.H"
-#include "SortableList.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -467,7 +466,7 @@ Foam::autoPtr<Foam::coordSet> Foam::sampledSet::gather
     );
 
 
-    if (Pstream::master() && allCurveDist.size() == 0)
+    if (Pstream::master() && allCurveDist.empty())
     {
         WarningInFunction
             << "Sample set " << name()
@@ -475,8 +474,8 @@ Foam::autoPtr<Foam::coordSet> Foam::sampledSet::gather
     }
 
     // Sort curveDist and use to fill masterSamplePts
-    SortableList<scalar> sortedDist(allCurveDist);
-    indexSet = sortedDist.indices();
+    Foam::sortedOrder(allCurveDist, indexSet);      // uses stable sort
+    scalarList sortedDist(allCurveDist, indexSet);  // with indices for mapping
 
     return autoPtr<coordSet>::New
     (
diff --git a/src/sampling/sampledSet/sampledSets/sampledSets.C b/src/sampling/sampledSet/sampledSets/sampledSets.C
index 567aed51120b9431f751f436992916420f9b1351..f706f3848604e331226bf235fd191424f6356c34 100644
--- a/src/sampling/sampledSet/sampledSets/sampledSets.C
+++ b/src/sampling/sampledSet/sampledSets/sampledSets.C
@@ -28,7 +28,6 @@ License
 #include "Time.H"
 #include "volFields.H"
 #include "ListListOps.H"
-#include "SortableList.H"
 #include "volPointInterpolation.H"
 #include "mapPolyMesh.H"
 #include "addToRunTimeSelectionTable.H"