To detect negative cycles with SPFA, count how many times each node is relaxed. If any node is relaxed or more times, a negative cycle exists. Why?
Each relaxation extends the path by one edge. If a node needs relaxations, the path uses edges, implying a cycle. If the path keeps improving, the cycle is negative. This is simpler than running full iterations. You detect the cycle as soon as a node is relaxed times, which can happen early if the cycle is small.