diff --git a/polynomial.py b/polynomial.py
index 689002daa5148d0c7b4e3caef3363c7bed5c24b8..85f8d61c6215340a7ca35424963ca1977cc7f526 100644
--- a/polynomial.py
+++ b/polynomial.py
@@ -1,3 +1,4 @@
+import math
 from numbers import Number
 import itertools
 import json
@@ -77,6 +78,7 @@ class Polynomial:
         str_value = ""
 
         for i, x in enumerate(reversed(self.value)):
+            x = math.ceil(x)
             if x == 0:
                 continue
             if i != 0:
@@ -130,7 +132,29 @@ def modular_inverse(a, n):
 
 
 def compute_lagrange_polynomial(points, prime_number):
-    pass
+    nb_points = len(points)
+    lagrange = Polynomial((0,))
+
+    # Create a polynomial for each points
+    for i in range(nb_points):
+        poly_li = Polynomial((1,))
+        divider = 1
+
+        # Compute the lagrange polynomial
+        for k in range(nb_points):
+            if k != i:
+                dividend = Polynomial((-points[k][0], 1))  # x - value
+
+                poly_li *= dividend
+                divider *= (points[i][0] - points[k][0])
+
+        divider = 1 / divider
+        point_yi = points[i][1]
+        poly_li = poly_li * Polynomial((divider,)) * Polynomial((point_yi,))
+
+        lagrange += poly_li
+
+    return lagrange
 
 
 def reed_solomon(points, data_length, last_error_index, prime_number):