I ran a simple program with a compiled language that calculates the factorial of the first few natural numbers using two simple cycles, an outer one to keep track of which is the number that we are calculating the factorial and an inner one to calculate the factorial by multiplying every natural number from 1 till the number itself. The program works perfecty for the first natural numbers, then approximately from the 13th value onwards the factorial calculated are clearly wrong. This is due to the integer arithmetic implemented in a modern computer, and I can undestand why negative values can arise. What I don't understand though is why, and this is something I've tested on different computers, after a very small amount of factorial calculated it always hits the number zero. Of course, if a the n-th factorial is evaluated to be 0, also the (n+1)-th factorial will be evaluated 0 and so on, but why is it that the number 0 always occurs after a very small number of factorial calculations?
EDIT: You may be wondering why I used two different cycles instead of only one... I did so to force the computer to recalculate every factorial from the beginning, just to test against the fact that indeed the factorial becomes always 0 and it is not by chance.
Here is my output:

Starting from 34!, all factorials are divisible by 2^32. So when your computer program computes the results modulo 2^32 (which, although you don't say what programming language you're using, this is likely), then the results are always 0.
Here is a program that computes factorials mod 2^32 in Python:
Which gives this output, which agrees with the output from your own program:
And here's a table of the exact values of this range of factorials, showing how many powers of 2 each contains: