diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -2,6 +2,9 @@
 
 ## Unreleased changes
 
+## 0.10.1
+- Added a function that always assumes base 2 where ambiguities occur
+
 ## 0.10.0.1
 - Relaxed upper bound on extra <1.7 -> <1.8
 - Fixed incorrect link in README
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -6,9 +6,6 @@
 
 This library is for reading strings describing a number of bytes like 2Kb and 0.5 MiB.
 
-The units KB, MB, GB and TB imply base 10 (e.g. 2KB = 2 x 1000).
-The units KiB, MiB, GiB and TiB imply base 2 (e.g. 2KiB = 2 * 1024).
-
 The following are examples of strings that are accepted:
 - 1b
 - 2 KiB
diff --git a/byte-count-reader.cabal b/byte-count-reader.cabal
--- a/byte-count-reader.cabal
+++ b/byte-count-reader.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.2
 name: byte-count-reader
-version: 0.10.0.1
+version: 0.10.1.1
 license: GPL-3.0-only
 license-file: LICENSE
 copyright: 2020 Daniel Rolls
diff --git a/src/Data/ByteCountReader.hs b/src/Data/ByteCountReader.hs
--- a/src/Data/ByteCountReader.hs
+++ b/src/Data/ByteCountReader.hs
@@ -6,9 +6,8 @@
 Maintainer  : daniel.rolls.27@googlemail.com
 
 This library is for reading strings describing a number of bytes like 2Kb and 0.5 MiB.
-The units KB, MB, GB and TB imply base 10 (e.g. 2KB = 2 x 1000). The units KiB, MiB, GiB and TiB imply base 2 (e.g. 2KiB = 2 * 1024).
 -}
-module Data.ByteCountReader (sizeInBytes) where
+module Data.ByteCountReader (sizeInBytes, sizeInBytesAssumingBase2) where
 
 import Data.Char (toLower)
 import Data.Either.Extra (eitherToMaybe)
@@ -24,6 +23,13 @@
 sizeInBytes inStr = do (number, units) <- eitherToMaybe $ parse bytesParser "<>" (unpack inStr)
                        roundDoubleInteger . (number *) . fromInteger <$> toMultiplier units
 
+-- |Read strings describing a number of bytes like 2KB and 0.5 MiB assuming 1Kb is 1024 bytes, not 1000.
+-- The units KB, MB, GB and TB are assumed to be base 2 (e.g. 2KB = 2 x 1024).
+-- The units KiB, MiB, GiB and TiB are assumed to be base 2 (e.g. 2KiB = 2 * 1024).
+sizeInBytesAssumingBase2 :: Text -> Maybe Integer
+sizeInBytesAssumingBase2 inStr = do (number, units) <- eitherToMaybe $ parse bytesParser "<>" (unpack inStr)
+                                    roundDoubleInteger . (number *) . fromInteger <$> toBase2Multiplier units
+
 bytesParser :: GenParser Char st (Double, String)
 bytesParser = do num <- parseNumber
                  parseSpaces
@@ -47,3 +53,17 @@
                      mapUnits _     = Nothing
                      _1024RaisedTo = Just . (1024 ^)
                      _1000RaisedTo = Just . (1000 ^)
+
+toBase2Multiplier :: String -> Maybe Integer
+toBase2Multiplier = mapUnits . map toLower
+               where mapUnits "b"   = _1024RaisedTo  0
+                     mapUnits "kb"  = _1024RaisedTo  1
+                     mapUnits "kib" = _1024RaisedTo  1
+                     mapUnits "mb"  = _1024RaisedTo  2
+                     mapUnits "mib" = _1024RaisedTo  2
+                     mapUnits "gb"  = _1024RaisedTo  3
+                     mapUnits "gib" = _1024RaisedTo  3
+                     mapUnits "tb"  = _1024RaisedTo  4
+                     mapUnits "tib" = _1024RaisedTo  4
+                     mapUnits _     = Nothing
+                     _1024RaisedTo = Just . (1024 ^)
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -7,7 +7,7 @@
 main = hspec $ 
      do it "Unparsable strings should return Nothing" $
              sizeInBytes "unparseable" `shouldBe` Nothing
-        testHappyPathScenarios
+        testHappyPathScenarios sizeInBytes
           [ ("1 kb", 1000)
           , ("0.5 kib", 512)
           , ("1 kib", 1024)
@@ -17,9 +17,18 @@
           , ("4 GiB", 4294967296)
           , ("1      tIb", 1099511627776)
           ]
-        where testHappyPathScenarios = foldl (>>) (return ()) . map parseTest
-              parseTest (string, expectedValue) = it ("Parse " <> unpack string) $
-                                                     sizeInBytes string `shouldBe` Just expectedValue
+        testHappyPathScenarios sizeInBytesAssumingBase2
+          [ ("1 kb", 1024)
+          , ("0.5 kib", 512)
+          , ("1 kib", 1024)
+          , ("2 kb", 2048)
+          , ("3 kb", 3072)
+          , (".5 MiB", 524288)
+          , ("4 GiB", 4294967296)
+          ]
+        where testHappyPathScenarios functionUnderTest = foldl (>>) (return ()) . map (parseTest functionUnderTest)
+              parseTest functionUnderTest (string, expectedValue) = it ("Parse " <> unpack string) $
+                                                                       functionUnderTest string `shouldBe` Just expectedValue
 
 
 
