diff --git a/lib/ex_xirr.ex b/lib/ex_xirr.ex index 33103db..e6a79b3 100644 --- a/lib/ex_xirr.ex +++ b/lib/ex_xirr.ex @@ -182,7 +182,10 @@ defmodule ExXirr do @spec calculate(atom(), list(), float(), float(), integer()) :: {:ok, float()} | {:error, String.t()} - defp calculate(:xirr, _, _, rate, _) when rate > 1_000_000_000, + defp calculate(:xirr, _, _, rate, _) when rate > 1_000_000, + do: {:error, "Converged on infinity."} + + defp calculate(:xirr, _, _, rate, _) when rate < -1_000_000, do: {:error, "Converged on infinity."} defp calculate(:xirr, _, acc, rate, _) when acc in [-0.0, +0.0], do: {:ok, Float.round(rate, 8)}