diff --git a/DIRECTORY.md b/DIRECTORY.md
index 6c1fa7aeb8..7f6484cae5 100644
--- a/DIRECTORY.md
+++ b/DIRECTORY.md
@@ -35,6 +35,8 @@
   * [ROT13](Ciphers/ROT13.js)
   * [VigenereCipher](Ciphers/VigenereCipher.js)
   * [XORCipher](Ciphers/XORCipher.js)
+* **Compression**
+  * [RLE](Compression/RLE.js)
 * **Conversions**
   * [ArbitraryBase](Conversions/ArbitraryBase.js)
   * [ArrayBufferToBase64](Conversions/ArrayBufferToBase64.js)
@@ -285,6 +287,7 @@
   * [Problem016](Project-Euler/Problem016.js)
   * [Problem017](Project-Euler/Problem017.js)
   * [Problem018](Project-Euler/Problem018.js)
+  * [Problem019](Project-Euler/Problem019.js)
   * [Problem020](Project-Euler/Problem020.js)
   * [Problem021](Project-Euler/Problem021.js)
   * [Problem023](Project-Euler/Problem023.js)
diff --git a/Project-Euler/Problem015.js b/Project-Euler/Problem015.js
index 9e63c75705..67df9a438b 100644
--- a/Project-Euler/Problem015.js
+++ b/Project-Euler/Problem015.js
@@ -7,8 +7,8 @@ How many such routes are there through a 20×20 grid?
 // A lattice path is composed of horizontal and vertical lines that pass through lattice points.
 
 export const latticePath = (gridSize) => {
-  let paths
-  for (let i = 1, paths = 1; i <= gridSize; i++) {
+  let paths = 1
+  for (let i = 1; i <= gridSize; i++) {
     paths = (paths * (gridSize + i)) / i
   }
   // The total number of paths can be found using the binomial coefficient (b+a)/a.
diff --git a/Project-Euler/test/Problem015.test.js b/Project-Euler/test/Problem015.test.js
new file mode 100644
index 0000000000..c5e7484df8
--- /dev/null
+++ b/Project-Euler/test/Problem015.test.js
@@ -0,0 +1,14 @@
+import { expect } from 'vitest'
+import { latticePath } from '../Problem015'
+
+describe('Finding total numbers of Lattice Paths', () => {
+  test.each([
+    [2, 6],
+    [4, 70],
+    [5, 252],
+    [10, 184756],
+    [20, 137846528820]
+  ])('If Grid Size: %i, then Lattice Paths count: %i', (a, expected) => {
+    expect(latticePath(a)).toBe(expected)
+  })
+})