True algorithm (used in Compute.exe) //Stocks and Flows first initializationAt t = 0 {    stocks(t) = stocks initial value    mirror stocks(t)  = sum (source stocks (t))    flows(t) = 0} //----------------------------------------------------------------------------- for t = 1 to last t { //last t = (last_cycle) x (last_time_per_cycle) //Stocks and Flows initialization for current time unit    stocks(t) = stocks(t-1)    mirror stocks(t) = mirror stocks(t-1)    flows(t) = 0       Filtering and grouping actions in Sets sorted by Chronology()       for first Set to last Set { //Actions dynamic computing         for first action to last action {            y[action] = function(action code)*        }           for first action to last action {            if flow[action] links two stocks {//First stocks update                if Rate is disable {                    source stock(t) = source stock(t) - y[action]                    target stock(t) = target stock(t) + y[action]                else {//store the return value                    RateBuffer[action] = y[action]                 }            } //Flows update            flow[action](t) = flow[action](t) + y[action]        }   //First mirror stocks update        for first mirror stock to last mirror stock {            mirror stock(t) = sum (source stocks(t))        }      }   //Last stocks update    for first RateBuffer[action] to last RateBuffer[action] {        source stock[action](t) = source stock[action](t) - (RateBuffer[action] / TimeStepI)        target stock[action](t) = target stock[action](t) + (RateBuffer[action] / TimeStepI)    } // TimeStepI = 1 / TIME STEP   //Last mirror stocks update    for first mirror stock to last mirror stock {        mirror stock(t) = sum (source stocks(t))    }   } //Algorithm end About Action code y[action] = function(action code)*   Action code example: //Read a current stock or flow or mirror stock value  y= Svalue("SB") + Fvalue("FE") - Mvalue("FA") //Read a delayed value:  y+= Svalue("SB",4,10) + Fvalue("FE",2,2) - Mvalue("FA",3,5)  y+= Svalue("SB",False,31) + Fvalue("FE",False,15) - Mvalue("FA",False,40)   //Default syntax to read a current stock or flow or mirror stock value    Svalue("SB") : read the current value of the stock "SB"     Fvalue("FE") : read the current value of the flow "FE"     Mvalue("FA") : read the current value of the mirror stock "FA"   //First syntax for delayed value:     Svalue("SB",c,t) // c= cycle, t=time = current time in the current cycle //Example:     Svalue("SB",4,10) : read a delayed value of the stock "SB" for cycle = 4 and time = 10     Fvalue("FE",2,2) : read a delayed value of the flow "FE" for cycle = 2 and time = 2     Mvalue("FA",3,5) : read a delayed value of the mirror stock "FA" for cycle = 3 and time = 5   /Second syntax for delayed value:     Svalue("SB",False,nbt) // nbt or nbtime =current time number starting from first cycle //Example:     Svalue("SB",False,31) : read a delayed value of the stock "SB" for nbtime = 31     Fvalue("FE",False,15) : read a delayed value of the flow "FE" for nbtime = 15     Mvalue("FA",False,40) : read a delayed value of the mirror stock "FA" for nbtime = 40   // nbtime max = (last_cycle) x (last_time) //be careful with action Chronologies !