Well, I remember posting some details once, but they seem to have gone into hiding. It might have only been the death code though. I do remember saying something about fractional deaths, and how Outpost 2 would remember, so it can count it towards your death rate in the future.
The model does seem to be quite unbounded. Once your population gets large, it just explodes. There is a slight growing limit to the rate at which children are trained into workers that takes effect at 160 people though, so there is a little more resistance to growth beyond that point. But by then, the natural growth force of 160 people is already pretty large.
Actually, upon examining my code, I realize there was a slight bug with the clipping of an intermediate value to at least 160. (I had the If condition reversed, as you'd normally see it in assembly code). I guess that sort of invalidates the results I posted above, which were below that 160 clipping point. The difference does seem to be very minor though for small values, but should be a little more exagerated for large values. I'll have to retest though. My results were predicted to be a bit high.
I don't really feel like explaining the model, so here's the code from the population simulator.
// -- Growth --
// New Workers
if (colonyState.active.numUniversities > 0 && colonyState.pop.num.kids > 0)
{
 growth.workers += num.kids;
 divisor = num.workers + num.scientists + num.kids;
 if (divisor <= 160)
 divisor = 160;
 divisor = ((divisor / 40) * 3 + 36) * 4;
Â
 newPop.workers = growth.workers / divisor;
 growth.workers = growth.workers % divisor;
 num.workers += newPop.workers;
 num.kids -= newPop.workers;
}
// New Kids
if (colonyState.active.numNurseries > 0 && num.workers + num.scientists > num.kids)
{
 growth.kids += num.scientists / 4 + num.workers / 2;
 divisor = colonyState.moraleLevel->fertRate;
 newPop.kids = growth.kids / divisor;
 growth.kids = growth.kids % divisor;
 num.kids += newPop.kids;
}
// -- Deaths --
// Kid Deaths
if (num.kids > 0)
{
 death.kids += num.kids;
 divisor = colonyState.moraleLevel->deathRate / 2 + colonyState.active.numNurseries * 40 + medCenterCapacity;
 diePop.kids = death.kids / divisor;
 death.kids = death.kids % divisor;
 num.kids -= diePop.kids;
 if (num.kids == 0)
 {
 death.kids = 0;
 growth.workers = 0;
 }
}
// Worker Deaths
if (num.workers > 0)
{
 death.workers += num.workers;
 divisor = colonyState.moraleLevel->deathRate + medCenterCapacity;
 diePop.workers = death.workers / divisor;
 death.workers = death.workers % divisor;
 num.workers -= diePop.workers;
 if (num.workers == 0)
 death.workers = 0;
}
// Scientist Deaths
if (num.scientists > 0)
{
 death.scientists += num.scientists;
 divisor = colonyState.moraleLevel->deathRate + medCenterCapacity;
 diePop.scientists = death.scientists / divisor;
 death.scientists = death.scientists % divisor;
 num.scientists -= diePop.scientists;
 if (num.scientists == 0)
 death.scientists = 0;
}
Edit: I take that back about the population explosion. I started wondering how that continual increase to the resistance of the population growth might affect things, particularly for large numbers, so I ran a few tests with about 5000 colonists and 10000 colonists, and I'm actually seeing a net decrease in population levels. This is with morale fixed at 100. From what I can see, the number of kids grows very quickly, and then halts, since the number of adults must be at least as large as the number of kids to allow further growth. At that point, the extremely high death rate associated with such a large population takes over and trims it down quite fast. You never really achive any population growth due to a lack of adults in relation to the number of kids, and if there is any temporary growth, it's reversed pretty fast due to the high death rate associated with having that many kids from the initial baby boom. What tends to happen is that the number of kids and the number of adults spirals down at about the same rate. I found population levels tended towards a little over 1600, for both small and large initial populations. I tested in the range 50 to 100000 initial people, and simulated for 20000 marks, and the results where always in the same ball park.
For lower morale levels, the population will tend to different values. For morale of 25 or less, it'll go to 0. For morale of at least 26, it'll stabilize at about 840. The above tests were without med centers, which do increase the stable population level. Having just 1 med center increases the stable level to just under 1900 people.