diff --git a/mathexpr.cabal b/mathexpr.cabal
--- a/mathexpr.cabal
+++ b/mathexpr.cabal
@@ -1,5 +1,5 @@
 name:                mathexpr
-version:             0.1.0.0
+version:             0.2.0.0
 synopsis:            Parse and evaluate math expressions with variables and functions
 description:         A simple tool to evaluate math expressions as strings with support for custom functions and operators
 homepage:            https://github.com/mdibaiee/mathexpr
diff --git a/src/Data/MathExpr.hs b/src/Data/MathExpr.hs
--- a/src/Data/MathExpr.hs
+++ b/src/Data/MathExpr.hs
@@ -1,3 +1,4 @@
+{-# Language ScopedTypeVariables #-}
 module Data.MathExpr
     ( evaluate
     , Settings (..)
@@ -6,7 +7,6 @@
     ) where
       import Data.Default.Class
       import Data.Maybe (isJust, fromJust)
-      import Debug.Trace
       import Data.List (find)
 
       data Settings = Settings { operators :: [(Char, Int, Double -> Double -> Double)]
@@ -78,9 +78,13 @@
           fns = functions settings
 
           helper :: [String] -> [String] -> Double
+          -- negative numbers come in the form ["num", "-"]
           helper [] [o] = read o
           helper (c:cs) os
-            | isOperator c =
+            | c == "-" && length os < 2 =
+                let result :: Double = negate . read . head $ cs
+                in helper (tail cs) $ (show result) : os
+            | isOperator c && length os >= 2 =
                 let result = (operatorFunction c) (read . head . tail $ os) (read . head $ os) 
                 in helper cs $ (show result) : drop 2 os
             | isFunction c =
