diff --git a/src/OpenFOAM/containers/Lists/ListOps/ListOps.H b/src/OpenFOAM/containers/Lists/ListOps/ListOps.H
index 90d70cc26bf929142a17f0f84deda9bb1d02fadc..d0689b0eb1955f82bb2ffee45f8d72e846a49fa0 100644
--- a/src/OpenFOAM/containers/Lists/ListOps/ListOps.H
+++ b/src/OpenFOAM/containers/Lists/ListOps/ListOps.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,6 +37,7 @@ SourceFiles
 #define ListOps_H
 
 #include "labelList.H"
+#include "ops.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -209,6 +210,18 @@ label findSortedIndex
 );
 
 
+//- Find last element < given value in sorted list and return index,
+//  return -1 if not found. Binary search.
+template<class ListType, class BinaryOp>
+label findLower
+(
+    const ListType&,
+    typename ListType::const_reference,
+    const label stary,
+    const BinaryOp& bop
+);
+
+
 //- Find last element < given value in sorted list and return index,
 //  return -1 if not found. Binary search.
 template<class ListType>
diff --git a/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C b/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C
index 41e28c3f64eef5e008f2cb47f4ee0e0dddc4e5e5..be6337a4283e6e5f039ba9a8fc5e6ee9cb52fb87 100644
--- a/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C
+++ b/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -592,12 +592,13 @@ Foam::label Foam::findSortedIndex
 }
 
 
-template<class ListType>
+template<class ListType, class BinaryOp>
 Foam::label Foam::findLower
 (
     const ListType& l,
     typename ListType::const_reference t,
-    const label start
+    const label start,
+    const BinaryOp& bop
 )
 {
     if (start >= l.size())
@@ -612,7 +613,7 @@ Foam::label Foam::findLower
     {
         label mid = (low + high)/2;
 
-        if (l[mid] < t)
+        if (bop(l[mid], t))
         {
             low = mid;
         }
@@ -622,13 +623,13 @@ Foam::label Foam::findLower
         }
     }
 
-    if (l[high] < t)
+    if (bop(l[high], t))
     {
         return high;
     }
     else
     {
-        if (l[low] < t)
+        if (bop(l[low], t))
         {
             return low;
         }
@@ -640,6 +641,18 @@ Foam::label Foam::findLower
 }
 
 
+template<class ListType>
+Foam::label Foam::findLower
+(
+    const ListType& l,
+    typename ListType::const_reference t,
+    const label start
+)
+{
+    return findLower(l, t, start, lessOp<typename ListType::value_type>());
+}
+
+
 template<class Container, class T, int nRows>
 Foam::List<Container> Foam::initList(const T elems[nRows])
 {
diff --git a/src/OpenFOAM/primitives/ops/ops.H b/src/OpenFOAM/primitives/ops/ops.H
index c68face927b32e2e25a0f6bd25bc8145007e308e..66d793084962f6706f6bf5eb20abc7c3a64f215a 100644
--- a/src/OpenFOAM/primitives/ops/ops.H
+++ b/src/OpenFOAM/primitives/ops/ops.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -142,6 +142,10 @@ Op(minMod, minMod(x, y))
 Op(and, x && y)
 Op(or, x || y)
 Op(eqEq, x == y)
+Op(less, x < y)
+Op(lessEq, x <= y)
+Op(greater, x > y)
+Op(greaterEq, x >= y)
 
 #undef Op