diff --git a/Data/Histogram.hs b/Data/Histogram.hs
--- a/Data/Histogram.hs
+++ b/Data/Histogram.hs
@@ -48,9 +48,20 @@
     -- * Folding
   , foldl
   , bfoldl
+    -- ** Specialized folds
   , sum
   , minimum
+  , minimumBy
   , maximum
+  , maximumBy
+  , minIndex
+  , minIndexBy
+  , maxIndex
+  , maxIndexBy
+  , minBin
+  , minBinBy
+  , maxBin
+  , maxBinBy
     -- * Slicing & rebinning
   , slice
   , rebin
@@ -181,13 +192,47 @@
 bfoldl = H.bfoldl
 
 sum :: (Bin bin, Unbox a, Num a) => Histogram bin a -> a
-sum = foldl (+) 0
+sum = H.sum
 
+
 minimum :: (Bin bin, Unbox a, Ord a) => Histogram bin a -> a
 minimum = H.minimum
 
+minimumBy :: (Bin bin, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> a
+minimumBy = H.minimumBy
+
 maximum :: (Bin bin, Unbox a, Ord a) => Histogram bin a -> a
 maximum = H.maximum
+
+maximumBy :: (Bin bin, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> a
+maximumBy = H.maximumBy
+
+
+minIndex :: (Bin bin, Ord a, Unbox a) => Histogram bin a -> Int
+minIndex = H.minIndex
+
+minIndexBy :: (Bin bin, Ord a, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> Int
+minIndexBy = H.minIndexBy
+
+maxIndex :: (Bin bin, Ord a, Unbox a) => Histogram bin a -> Int
+maxIndex = H.maxIndex
+
+maxIndexBy :: (Bin bin, Ord a, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> Int
+maxIndexBy = H.maxIndexBy
+
+
+minBin :: (Bin bin, Ord a, Unbox a) => Histogram bin a -> BinValue bin
+minBin = H.minBin
+
+minBinBy :: (Bin bin, Ord a, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> BinValue bin
+minBinBy = H.minBinBy
+
+maxBin :: (Bin bin, Ord a, Unbox a) => Histogram bin a -> BinValue bin
+maxBin = H.maxBin
+
+maxBinBy :: (Bin bin, Ord a, Unbox a) => (a -> a -> Ordering) -> Histogram bin a -> BinValue bin
+maxBinBy = H.maxBinBy
+
 
 
 ----------------------------------------------------------------
diff --git a/Data/Histogram/Generic.hs b/Data/Histogram/Generic.hs
--- a/Data/Histogram/Generic.hs
+++ b/Data/Histogram/Generic.hs
@@ -47,9 +47,20 @@
     -- * Folding
   , foldl
   , bfoldl
+    -- ** Specialized folds
   , sum
   , minimum
+  , minimumBy
   , maximum
+  , maximumBy
+  , minIndex
+  , minIndexBy
+  , maxIndex
+  , maxIndexBy
+  , minBin
+  , minBinBy
+  , maxBin
+  , maxBinBy
     -- * Slicing & rebinning
   , slice
   , rebin
@@ -190,9 +201,9 @@
 
 -- | Vector do not supply 'NFData' instance so let just 'seq' it and
 --   hope it's enough. Should be enough for unboxed vectors.
-instance (NFData a, NFData bin) => NFData (Histogram v bin a) where
-   rnf (Histogram bin uo vec) = 
-     rnf bin `seq` rnf uo `seq` seq vec ()
+instance (NFData a, NFData bin, NFData (v a)) => NFData (Histogram v bin a) where
+   rnf (Histogram bin uo vec) =
+     rnf bin `seq` rnf uo `seq` rnf vec `seq` ()
 
 -- | If vector is a functor then histogram is functor as well
 instance (Functor v) => Functor (Histogram v bin) where
@@ -356,13 +367,57 @@
 sum :: (Bin bin, Vector v a, Num a) => Histogram v bin a -> a
 sum = foldl (+) 0
 
--- | Maximal bin value
+
+-- | Minimal bin content.
 minimum :: (Bin bin, Vector v a, Ord a) => Histogram v bin a -> a
 minimum = G.minimum . histData
 
--- | Maximal bin value
+-- | Minimal bin content using custom comparison.
+minimumBy :: (Bin bin, Vector v a) => (a -> a -> Ordering) -> Histogram v bin a -> a
+minimumBy f = G.minimumBy f . histData
+
+-- | Maximal bin content
 maximum :: (Bin bin, Vector v a, Ord a) => Histogram v bin a -> a
 maximum = G.maximum . histData
+
+-- | Maximal bin content using custom comparison.
+maximumBy :: (Bin bin, Vector v a) => (a -> a -> Ordering) -> Histogram v bin a -> a
+maximumBy f = G.maximumBy f . histData
+
+
+-- | Index of a bin with minimal content
+minIndex :: (Bin bin, Ord a, Vector v a) => Histogram v bin a -> Int
+minIndex = G.minIndex . histData
+
+-- | Index of a bin with minimal content using custom comparison.
+minIndexBy :: (Bin bin, Ord a, Vector v a) => (a -> a -> Ordering) -> Histogram v bin a -> Int
+minIndexBy f = G.minIndexBy f . histData
+
+-- | Index of a bin with maximal content
+maxIndex :: (Bin bin, Ord a, Vector v a) => Histogram v bin a -> Int
+maxIndex = G.maxIndex . histData
+
+-- | Index of a bin with maximal content using custom comparison.
+maxIndexBy :: (Bin bin, Ord a, Vector v a) => (a -> a -> Ordering) -> Histogram v bin a -> Int
+maxIndexBy f = G.maxIndexBy f . histData
+
+
+-- | Value of a bin with minimal content
+minBin :: (Bin bin, Ord a, Vector v a) => Histogram v bin a -> BinValue bin
+minBin = minBinBy compare
+
+-- | Value bin with minimal content using custom comparison.
+minBinBy :: (Bin bin, Ord a, Vector v a) => (a -> a -> Ordering) -> Histogram v bin a -> BinValue bin
+minBinBy f h = fromIndex (bins h) $ minIndexBy f h
+
+-- | Value of a bin with maximal content
+maxBin :: (Bin bin, Ord a, Vector v a) => Histogram v bin a -> BinValue bin
+maxBin = maxBinBy compare
+
+-- | Value of a bin with maximal content using custom comparison.
+maxBinBy :: (Bin bin, Ord a, Vector v a) => (a -> a -> Ordering) -> Histogram v bin a -> BinValue bin
+maxBinBy f h = fromIndex (bins h) $ maxIndexBy f h
+
 
 
 
diff --git a/histogram-fill.cabal b/histogram-fill.cabal
--- a/histogram-fill.cabal
+++ b/histogram-fill.cabal
@@ -1,5 +1,5 @@
 Name:           histogram-fill
-Version:        0.7.3.0
+Version:        0.7.4.0
 Synopsis:       Library for histograms creation.
 Description:    
   This is library for histograms filling. Its aim to provide
@@ -7,6 +7,12 @@
   .
   Changes in 0.7.3.0
   .
+  * Function for searching for minimum/maximum added.
+  .
+  * @NFData@ instance is fixed.
+  .
+  Changes in 0.7.3.0
+  .
   * @mkStatefulBuilder@ is added and HBuilder constructor is exposed.
   .
   * Indexing operators for immutable histograms are added.
@@ -77,7 +83,7 @@
   Build-Depends:        base >=3 && <5,
                         deepseq,
                         primitive,
-                        vector >= 0.7
+                        vector >= 0.10.0.1
   Exposed-modules:      Data.Histogram
                         Data.Histogram.Generic
                         Data.Histogram.Fill
