diff --git a/pystencils/backends/cbackend.py b/pystencils/backends/cbackend.py
index 7248846b312c920768e1f5b68af65aa21cfb46b8..5560652513b817068a297ba6df39527280857601 100644
--- a/pystencils/backends/cbackend.py
+++ b/pystencils/backends/cbackend.py
@@ -350,7 +350,7 @@ class CustomSympyPrinter(CCodePrinter):
             return "&(%s)" % self._print(expr.args[0])
         elif isinstance(expr, cast_func):
             arg, data_type = expr.args
-            if isinstance(arg, sp.Number):
+            if isinstance(arg, sp.Number) and arg.is_finite:
                 return self._typed_number(arg, data_type)
             else:
                 return "((%s)(%s))" % (data_type, self._print(arg))
diff --git a/pystencils_tests/test_print_infinity.py b/pystencils_tests/test_print_infinity.py
new file mode 100644
index 0000000000000000000000000000000000000000..4b1e488822163e684dcad4009fca1b72c7d87d2c
--- /dev/null
+++ b/pystencils_tests/test_print_infinity.py
@@ -0,0 +1,22 @@
+import pytest
+
+import pystencils
+from sympy import oo
+
+
+@pytest.mark.parametrize('type', ('float32', 'float64', 'int64'))
+@pytest.mark.parametrize('negative', (False, 'Negative'))
+@pytest.mark.parametrize('target', ('cpu', 'gpu'))
+def test_print_infinity(type, negative, target):
+
+    x = pystencils.fields(f'x:  {type}[1d]')
+
+    if negative:
+        assignment = pystencils.Assignment(x.center, -oo)
+    else:
+        assignment = pystencils.Assignment(x.center, oo)
+    ast = pystencils.create_kernel(assignment, data_type=type, target=target)
+
+    ast.compile()
+
+    print(ast.compile().code)