diff --git a/elbow.cabal b/elbow.cabal
--- a/elbow.cabal
+++ b/elbow.cabal
@@ -1,5 +1,5 @@
 name:                elbow
-version:             0.1.0.0
+version:             0.1.1.0
 synopsis:            Find the elbow point.
 description:         Use rotations to identify the elbow point of a two-dimensional long-tailed distribution.
 homepage:            http://github.com/GregorySchwartz/elbow#readme
diff --git a/src/Math/Elbow.hs b/src/Math/Elbow.hs
--- a/src/Math/Elbow.hs
+++ b/src/Math/Elbow.hs
@@ -10,6 +10,7 @@
   ( findElbow
   , findElbowList
   , getRotationAngle
+  , MaxMin (..)
   ) where
 
 -- Remote
@@ -18,6 +19,9 @@
 
 -- Local
 
+
+data MaxMin = Max | Min
+
 -- | Convert a list to a tuple.
 listToTuple :: [a] -> Maybe (a, a)
 listToTuple [x, y] = Just (x, y)
@@ -32,22 +36,30 @@
                  . fmap (\x -> H.maxElement x - H.minElement x)
                  . H.toColumns
 
--- | Get the elbow point (and its index) of a two-dimensional distribution.
--- Matrix rows are observations, columns are dimensions.
-findElbow :: (RealFloat a, H.Numeric a) => H.Matrix a -> Maybe (Int, (a, a))
-findElbow m = do
+-- | Get the elbow point (and its index) of a two-dimensional distribution. Uses
+-- the Max or Min to identify convex / concave point, depending on the choice
+-- (for positive x and y, top left hump would be Max, bottom right dip would be
+-- Min). Matrix rows are observations, columns are dimensions.
+findElbow :: (RealFloat a, H.Numeric a)
+          => MaxMin -> H.Matrix a -> Maybe (Int, (a, a))
+findElbow maxMin m = do
   theta <- getRotationAngle m
 
   let co = cos theta
       si = sin theta
       rot = (2 H.>< 2) [co, -si, si, co]
       rotated = m H.<> rot
+      findMaxMin Max = H.maxIndex
+      findMaxMin Min = H.minIndex
 
-  idx <- fmap H.minIndex . flip atMay 1 . H.toColumns $ rotated
+  idx <- fmap (findMaxMin maxMin) . flip atMay 1 . H.toColumns $ rotated
 
   fmap (idx,) . listToTuple . H.toList $ m H.! idx
 
--- | Get the elbow point (and its index) of a two-dimensional distribution.
--- Matrix rows are observations, columns are dimensions. List of columns.
-findElbowList :: (RealFloat a, H.Numeric a) => [[a]] -> Maybe (Int, (a, a))
-findElbowList = findElbow . H.fromColumns . fmap H.fromList
+-- | Get the elbow point (and its index) of a two-dimensional distribution. Uses
+-- the Max or Min to identify convex / concave point, depending on the choice
+-- (for positive x and y, top left hump would be Max, bottom right dip would be
+-- Min). Matrix rows are observations, columns are dimensions. List of columns.
+findElbowList :: (RealFloat a, H.Numeric a)
+              => MaxMin -> [[a]] -> Maybe (Int, (a, a))
+findElbowList maxMin = findElbow maxMin . H.fromColumns . fmap H.fromList
