diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for typst-hs
 
+## 0.11.0.1
+
+  * Fix `calc.pow` so it accepts negative exponents (#102).
+
 ## 0.11
 
   * Fall back on defaults for settable element fields (#100).
diff --git a/src/Typst/Module/Calc.hs b/src/Typst/Module/Calc.hs
--- a/src/Typst/Module/Calc.hs
+++ b/src/Typst/Module/Calc.hs
@@ -146,11 +146,12 @@
           base <- nthArg 1
           ex <- nthArg 2
           case (base, ex) of
-            (VInteger x, VInteger y) -> pure $ VInteger $ x ^ y
+            (VInteger x, VInteger y)
+              | y >= 0 -> pure $ VInteger $ x ^ y
             _ -> do
               (base' :: Double) <- fromVal base
               (ex' :: Integer) <- fromVal ex
-              pure $ VFloat $ (base') ^ (ex')
+              pure $ VFloat $ (base') ^^ (ex')
       ),
       ( "quo",
         makeFunction $ do
diff --git a/test/typ/regression/issue-102.out b/test/typ/regression/issue-102.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue-102.out
@@ -0,0 +1,46 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue-102.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "r")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "pow")) (Ident (Identifier "calc")))
+          [ NormalArg (Literal (Float 1.125))
+          , NormalArg (Negated (Literal (Int 2)))
+          ]))
+, SoftBreak
+, Code
+    "typ/regression/issue-102.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "s")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "pow")) (Ident (Identifier "calc")))
+          [ NormalArg (Literal (Int 1))
+          , NormalArg (Negated (Literal (Int 2)))
+          ]))
+, SoftBreak
+, Code
+    "typ/regression/issue-102.typ"
+    ( line 3 , column 2 )
+    (Ident (Identifier "r"))
+, SoftBreak
+, Code
+    "typ/regression/issue-102.typ"
+    ( line 4 , column 2 )
+    (Ident (Identifier "s"))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [0.7901234567901234]), 
+                 text(body: [
+]), 
+                 text(body: [1.0]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue-102.typ b/test/typ/regression/issue-102.typ
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue-102.typ
@@ -0,0 +1,4 @@
+#let r = calc.pow(1.125, -2)
+#let s = calc.pow(1, -2)
+#r
+#s
diff --git a/typst.cabal b/typst.cabal
--- a/typst.cabal
+++ b/typst.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               typst
-version:            0.11
+version:            0.11.0.1
 synopsis:           Parsing and evaluating typst syntax.
 description:        A library for parsing and evaluating typst syntax.
                     Typst (<https://typst.app>) is a document layout and
