Hines, M.L. and Carnevale, N.T. Discrete event simulation in the NEURON environment Neurocomputing 58-60:1117-1122, 2004. The response of many types of integrate and fire cells to synaptic input can be computed analytically and their threshold crossing either computed analytically or approximated to high accuracy via Newton approximation. The NEURON simulation environment simulates networks of such artificial spiking neurons using discrete event simulation techniques in which computations are performed only when events are received. Thus computation time is proportional only to the number of events delivered and is independent of the number of cells or problem time. The first two panels of figure 1 are reproduced using the fixed step method. When the variable time step method is selected the third panel looks quite different from the figure after NEURON version 5.7.71 due to an improvment in NetStim. The old version of NetStim sent a self-event to itself .1 ms after each spike event so that it could reset a spike variable used for plotting. The new version is more efficient since it no longer sends this extra event to itself and no longer manages the spike variable. (Spike times are best recorded using NetCon.record(Vector).) Therefore, even in the original figure the apparently abrupt increases in IntFire1[0].M are not discontinuous but merely the value of IntFire1[0].M after a 0.1 ms interval. One can reproduce the third panel by creating another IntFire1 cell, connecting NetCon's to it from the three NetStim's and setting 0.1 ms delays for them. This will force the extra returns from fadvance(). Note that fadvance() returns before the delivery of an event and, for POINT_PROCESS models, after the delivery of an event. However ARTIFICIAL_CELL models do not cause re-initialization of the Cvode integrator when an event is delivered to them and therefore fadvance() returns before but not after the delivery of the event. Therefore if one wishes to capture the 0 interval discontinuities, one can change ARTIFICIAL_CELL to POINT_PROCESS but at the cost of purposeless Cvode initialization.