diff --git a/src/Parser/Numbers.md b/src/Parser/Numbers.md
index 008b649..d25343b 100644
--- a/src/Parser/Numbers.md
+++ b/src/Parser/Numbers.md
@@ -76,6 +76,23 @@ natBase10 : Parser Nat
 natBase10 = nat base10
 ```
 
+### Integer
+
+```idris
+export
+integer : Base -> Parser Integer
+integer b = do
+  negative <- map isJust . tryMaybe $ parseExactChar '-'
+  value <- map natToInteger $ nat b
+  if negative
+    then pure $ negate value
+    else pure $ value
+
+export
+integerBase10 : Parser Integer
+integerBase10 = integer base10
+```
+
 ## Unit tests
 
 Test roundtripping a value through the provided parser
@@ -111,3 +128,22 @@ natRoundTrip = pure $
   && !(roundtrip 1234567890000 natBase10) 
   && !(roundtrip 12345678901234567890 natBase10) 
 ```
+
+```idris
+-- @@test Integer round trip
+integerRoundTrip : IO Bool
+integerRoundTrip = pure $ 
+  !(roundtrip 0 integerBase10) 
+  && !(roundtrip 1 integerBase10) 
+  && !(roundtrip 100 integerBase10) 
+  && !(roundtrip 1234 integerBase10) 
+  && !(roundtrip 1234567890 integerBase10) 
+  && !(roundtrip 1234567890000 integerBase10) 
+  && !(roundtrip 12345678901234567890 integerBase10) 
+  && !(roundtrip (-1) integerBase10) 
+  && !(roundtrip (-100) integerBase10) 
+  && !(roundtrip (-1234) integerBase10) 
+  && !(roundtrip (-1234567890) integerBase10) 
+  && !(roundtrip (-1234567890000) integerBase10) 
+  && !(roundtrip (-12345678901234567890) integerBase10) 
+```