===Capturing a Value as a Machine Passes=== In this case, an asset named **Machine** with a //speed// and a //position// property is moving up and down a fixed path. We want to capture the speed of the machine with 1m resolution along that path. This solution exploits the fact that a calculation that returns **None** doesn't actually update - it continues to hold the previous value. def CaptureSpeed(pos,offset,speed): if int(pos) == offset: return speed return None @mdl.part("Machine Speed Over Travel",host) def TravelSpeedCapture(mod): Position = mod.AddInput("Machine Position",7,"Machine.Position") Places = mod.AddInput("Maximum Position",170,"Machine.Max Position") Speed = mod.AddInput("Machine Speed",0,"Machine.Speed") for x in range(0,int(float(Places))): mod.AddOutput("Position " + str(x+1) + " Pass Speed",lambda x=x: CaptureSpeed(float(Position),x,float(Speed)),[Position,Speed])