``` IF #Speed>#IN_MAX THEN #Speed := #IN_MAX; END_IF; IF #Speed<#IN_MIN THEN #Speed := #IN_MIN; END_IF; #Scaled := ((#Speed-#IN_MIN)/(#IN_MAX-#IN_MIN))*(#OUT_MAX-#OUT_MIN)+#OUT_MIN; IF #Scaled>#OUT_MAX THEN #Scaled := #OUT_MAX; END_IF; IF #Scaled<#OUT_MIN THEN #Scaled := #OUT_MIN; END_IF; IF #"Bottle Diameter" = 0 OR #Step = 0 THEN #"Bottle Diameter" := 1.0; #Step := 1.0; END_IF; IF #Type = #"Scaled Speed" THEN #"Speed Scaled" := #Scaled; ELSIF #Type = #"Scaled for Doser" THEN #"Speed Scaled" := #Scaled * (#"Bottle Diameter" / #Step); ELSIF #Type = #"Scaled with gap" THEN #"Speed Scaled" := #Scaled * (#Step / #"Bottle Diameter"); ELSE #"Speed Scaled" := 0.0; END_IF; ``` ```pascal IF #"Bottles From Start Infeed" < #"Fixed Paramters"."Number of Slots on Main Chain" / 4 OR #Status."Low Speed" THEN #Status."Chain Request Speed" := #Recipe."Low Speed"; ELSIF #Status."High Speed" AND #"Bottles From Start Infeed" > #"Fixed Paramters"."Number of Slots on Main Chain" THEN #Status."Chain Request Speed" := #Recipe."Over Speed"; ELSE #Status."Chain Request Speed" := #Recipe."Production Speed"; END_IF; ```