diff --git a/src/data/layers/elves.tsx b/src/data/layers/elves.tsx
index 2932f3c..e42f6dc 100644
--- a/src/data/layers/elves.tsx
+++ b/src/data/layers/elves.tsx
@@ -227,7 +227,7 @@ const layer = createLayer(id, function (this: BaseLayer) {
                 while (Decimal.gte(buyProgress.value, cooldown)) {
                     if (unref(options.buyable.canPurchase)) {
                         options.buyable.amount.value = Decimal.add(options.buyable.amount.value, 1);
-                        buyProgress.value = cooldown.sub(cooldown);
+                        buyProgress.value = Decimal.sub(buyProgress.value, cooldown);
                     } else {
                         buyProgress.value = cooldown;
                         break;