diff --git a/raytracing/matrix.py b/raytracing/matrix.py
index 43f9790..c84cede 100644
--- a/raytracing/matrix.py
+++ b/raytracing/matrix.py
@@ -846,7 +846,8 @@ class Matrix(object):
 
     @property
     def hasPower(self):
-        """ If True, then there is a non-null focal length because C!=0
+        """ If True, then there is a non-null focal length because C!=0. We compare to an epsilon value, because
+        computational errors can occur and lead to C being very small, but not 0.
 
         Examples
         --------
@@ -861,7 +862,7 @@ class Matrix(object):
         >>> print('hasPower:' , M2.hasPower)
         hasPower: False
         """
-        return self.C != 0
+        return abs(self.C) > Matrix.__epsilon__
 
     def pointsOfInterest(self, z):
         """ Any points of interest for this matrix (focal points,

diff --git a/raytracing/tests/testsMatrix.py b/raytracing/tests/testsMatrix.py
index 9c75340..886a9b4 100644
--- a/raytracing/tests/testsMatrix.py
+++ b/raytracing/tests/testsMatrix.py
@@ -344,6 +344,15 @@ class TestMatrix(unittest.TestCase):
         m2 = Matrix(A=1, B=1, C=3, D=4)
         self.assertFalse(m2.isImaging)
 
+    def testHasNoPower(self):
+        f1 = 1.0000000000000017
+        f2 = 2.05 * f1
+
+        # This simulates a 4f system (since we test Matrix, we should only use basic matrices)
+        m = Matrix(1, f1, 0, 1) * Matrix(1, 0, -1 / f1, 1) * Matrix(1, f1, 0, 1) * Matrix(1, f2, 0, 1)
+        m = m * Matrix(1, 0, -1 / f2, 1) * Matrix(1, f1, 0, 1)
+        self.assertFalse(m.hasPower)
+
     def testEffectiveFocalLengthsHasPower(self):
         m = Matrix(1, 2, 3, 4)
         focalLengths = (-1 / 3, -1 / 3)

Matrix: hasPower returns True when it should be False
When we want to know if a `Matrix` has power, we check if `self.C != 0`. In some cases, computational errors occurs due to the fact that we are handling floats and `self.C` is really close to 0. Example:
```python
d1 = 1.0000000000000017 # Some computation errors tend to add digits at the end of the number
d2 = 1.0000000000000017 * 2.05
matrixGroup = System4f(d1, d2) # We use a 4f system because it is a real physical system
# Any matrix with C close but not 0 will do
print(matrixGroup.C) # We check what is the value of the C component of the ewuivalent matrix
```
The output is:
```python
1.1102230246251565e-16
```
Which is **VERY** small, but still not 0. Obviously, a 4f system has no power, but with computational errors, the code considers it has power.
raytracing/tests/testsMatrix.py::TestMatrix::testHasNoPower
raytracing/tests/testsMatrix.py::TestMatrix::testApertureDiameter raytracing/tests/testsMatrix.py::TestMatrix::testAxesToDataScale raytracing/tests/testsMatrix.py::TestMatrix::testBackFocalLengthSupposedNone raytracing/tests/testsMatrix.py::TestMatrix::testDisplayHalfHeight raytracing/tests/testsMatrix.py::TestMatrix::testEffectiveFocalLengthsHasPower raytracing/tests/testsMatrix.py::TestMatrix::testEffectiveFocalLengthsNoPower raytracing/tests/testsMatrix.py::TestMatrix::testFiniteBackConjugate raytracing/tests/testsMatrix.py::TestMatrix::testFiniteForwardConjugate raytracing/tests/testsMatrix.py::TestMatrix::testFocusPositions raytracing/tests/testsMatrix.py::TestMatrix::testFocusPositionsNoPower raytracing/tests/testsMatrix.py::TestMatrix::testFrontFocalLengthSupposedNone raytracing/tests/testsMatrix.py::TestMatrix::testInfiniteBackConjugate raytracing/tests/testsMatrix.py::TestMatrix::testInfiniteForwardConjugate raytracing/tests/testsMatrix.py::TestMatrix::testIsImaging raytracing/tests/testsMatrix.py::TestMatrix::testMagnificationImaging raytracing/tests/testsMatrix.py::TestMatrix::testMagnificationNotImaging raytracing/tests/testsMatrix.py::TestMatrix::testMatrix raytracing/tests/testsMatrix.py::TestMatrix::testMatrixBackFocalLength raytracing/tests/testsMatrix.py::TestMatrix::testMatrixExplicit raytracing/tests/testsMatrix.py::TestMatrix::testMatrixFlipOrientation raytracing/tests/testsMatrix.py::TestMatrix::testMatrixFrontFocalLength raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductGaussianBeamMath raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductGaussianBeamWavelengthOut raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductGaussianClippedOverAperture raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductGaussianInitiallyClipped raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductGaussianLength raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductGaussianNotClipped raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductGaussianNotSameRefractionIndex raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductGaussianRefractIndexOut raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductLength raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductMath raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductOutpuRayLength raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductOutputRayAperture raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductRayAlreadyBlocked raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductRayGoesInAperture raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductUnknownRightSide raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductVertices raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductVerticesAllNone raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductVerticesFirstNone raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductVerticesSecondNone raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductVerticesTwoElements raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductVerticesTwoElementsRepresentingGroups raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductWithRayGoesOverAperture raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductWithRayGoesUnderAperture raytracing/tests/testsMatrix.py::TestMatrix::testMatrixProductWithRayMath raytracing/tests/testsMatrix.py::TestMatrix::testPointsOfInterest raytracing/tests/testsMatrix.py::TestMatrix::testPrincipalPlanePositions raytracing/tests/testsMatrix.py::TestMatrix::testPrincipalPlanePositionsNoPower raytracing/tests/testsMatrix.py::TestMatrix::testStrRepresentation raytracing/tests/testsMatrix.py::TestMatrix::testStrRepresentationAfocal raytracing/tests/testsMatrix.py::TestMatrix::testTrace raytracing/tests/testsMatrix.py::TestMatrix::testTraceBlocked raytracing/tests/testsMatrix.py::TestMatrix::testTraceGaussianBeam raytracing/tests/testsMatrix.py::TestMatrix::testTraceMany raytracing/tests/testsMatrix.py::TestMatrix::testTraceManyJustOne raytracing/tests/testsMatrix.py::TestMatrix::testTraceManyThroughInParallel raytracing/tests/testsMatrix.py::TestMatrix::testTraceManyThroughIterable raytracing/tests/testsMatrix.py::TestMatrix::testTraceManyThroughLastRayBlocked raytracing/tests/testsMatrix.py::TestMatrix::testTraceManyThroughNoOutput raytracing/tests/testsMatrix.py::TestMatrix::testTraceManyThroughNotIterable raytracing/tests/testsMatrix.py::TestMatrix::testTraceManyThroughOutput raytracing/tests/testsMatrix.py::TestMatrix::testTraceNullLength raytracing/tests/testsMatrix.py::TestMatrix::testTraceThrough raytracing/tests/testsMatrix.py::TestMatrix::testTransferMatrices raytracing/tests/testsMatrix.py::TestMatrix::testTransferMatrix raytracing/tests/testsMatrix.py::TestMatrix::testWarningsFormat