What each G and M code does on each control, as CNC Simulator runs it. The same explanations appear in the app’s learning mode when you hover a code in the program.
| Code | What it does |
|---|---|
| G00 | Rapid positioning at the machine's top speed, not cutting. Use it only in free air: a rapid into the stock is a crash. |
| G01 | Straight cut at feed F to the programmed point. |
| G02 | Clockwise arc to the end point, seen from the plane's positive axis. Center with I/J/K (from the start point) or radius R. |
| G03 | Counterclockwise arc to the end point. Center with I/J/K (from the start point) or radius R. |
| G04 | Dwell: waits P (milliseconds, no decimal point) or X/U (seconds) without moving. |
| G07.1 | Cylindrical interpolation. Cylindrical interpolation: C is unrolled on the diameter, for slots around a shaft. |
| G10 | Programmable data input (work offsets L2/L20). Writes offsets from the program: L2/L20 work offsets, L10–L13 tool offsets (lathe: P n wear, P 10000+n geometry). |
| G12.1 | Polar coordinate interpolation X/C. Polar interpolation on: X (diameter) and C become a flat XC plane, for milling the face of a part with a live tool. |
| G13.1 | Polar interpolation off. |
| G17 | Plane XY for arcs and cutter compensation (machining centers). |
| G18 | Plane ZX for arcs and compensation (the turning plane on lathes). |
| G19 | Plane YZ for arcs and compensation. |
| G20 | Units in inches. |
| G21 | Units in millimeters. |
| G28 | Return to the machine reference point through the programmed point (G91 G28 Z0 goes straight up from where it is). |
| G32 | Thread cutting. Thread cutting move: a straight cut synchronized with the spindle, F = lead. |
| G40 | Cancels cutter (or nose) radius compensation. Cancel with a move away from the part. |
| G41 | Cutter radius compensation to the left of the path (climb milling on outside contours). Radius from D (lathe: nose radius of the T offset). Start it with a straight move. |
| G42 | Cutter radius compensation to the right of the path. Radius from D (lathe: nose radius). Start it with a straight move. |
| G53 | Move in machine coordinates for this block only, ignoring work offsets and tool length. |
| G54 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G55 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G56 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G57 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G58 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G59 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G65 | Macro call (G65 P n): runs program O n once, with the letters as arguments (A → #1, B → #2, …). |
| G66 | Modal macro call: the macro runs after every move until it is cancelled. |
| G67 | Cancels the modal macro call. |
| G70 | Finishing cycle (G70 P Q): runs the shape between blocks N P and N Q once, with the finishing feed, after G71/G72/G73. |
| G71 | Longitudinal roughing. Stock removal in turning (G71). First block: U depth of cut (radius) and R retract. Second block: P and Q are the N numbers of the first and last block of the finished shape, U/W the finishing allowance in X (diameter) and Z, F the roughing feed. |
| G72 | Face roughing. Stock removal in facing (G72): like G71, but the passes run along X, stepping in Z (W depth). |
| G73 | Pattern repeating. Pattern repeating (G73): the finished shape is followed several times, closer each time; for forged or cast parts. U/W relief, R number of passes. |
| G74 | Face peck drilling / turning with peck. Peck cycle along Z (face grooving or deep drilling on the axis). |
| G75 | Grooving / facing. Peck grooving along X. |
| G76 | Multiple threading (G76). First block: P (passes of finish, chamfer, angle, as 6 digits), Q minimum depth, R finishing allowance. Second block: X Z thread root at the end, P thread height, Q first depth (microns), F lead. |
| G77 | Single turning cycle: rapid in, cut to X Z, out and back, in one block. R makes a taper. Repeat with only the next X. |
| G78 | Single threading cycle: one pass per block, F = lead. Program the next diameter for each pass. |
| G79 | Single facing cycle: like the turning cycle, but cutting along X. R makes a taper in Z. |
| G80 | Cancels the active drilling cycle: the next X/Y no longer drills. |
| G83 | Face drilling. Drilling cycle: rapid to R, feed to Z, rapid out (G82 with a dwell P at the bottom). Repeats at each X/Y until G80. |
| G84 | Face tapping. Tapping cycle: feed F must be the pitch × rpm (or the pitch with feed per revolution); the spindle reverses at the bottom. |
| G85 | Boring cycle: feed in to Z and out (how it comes out, feed or rapid, stopped or turning, depends on the code). |
| G87 | Radial drilling with a live tool, along X toward the axis. |
| G88 | Radial tapping with a live tool. |
| G90 | Absolute coordinates: every value is a position from the work zero. |
| G91 | Incremental coordinates: every value is a distance from where the tool is. |
| G92 | Set origin or max spindle speed. Sets the current position as the given coordinates (G92 on mills, G50 on system A lathes); on lathes it also limits the spindle speed with S. |
| G94 | Feed F in mm/min. |
| G95 | Feed F in mm per spindle revolution (the usual on lathes). |
| G96 | Constant cutting speed: S is in m/min and the rpm rises as the diameter gets smaller. Limit it with G50/G92 S. |
| G97 | Constant spindle speed: S in rpm. |
| G98 | After each hole the tool returns to the initial level (where the cycle started): safe over clamps. |
| G99 | After each hole the tool returns to the R level: faster, for a flat part without obstacles. |
| Code | What it does |
|---|---|
| M00 | Program stop: the machine stops until cycle start (to measure, clean chips, turn the part). |
| M01 | Optional stop: stops only with the M01 key on. |
| M02 | End of program. |
| M03 | Spindle, or live tool when S2= is given, clockwise. Spindle on, clockwise (S sets the speed). |
| M04 | Spindle on, counterclockwise. |
| M05 | Also releases the M85 brake. Spindle stop. |
| M08 | Coolant on. |
| M09 | Coolant off. |
| M15 | Reverse coupling shaft rotation (counter-clockwise). Machine function with no effect on the path. |
| M16 | Reverse coupling shaft rotation (clockwise). Machine function with no effect on the path. |
| M19 | Spindle orientation / enable C axis. C axis mode: the spindle becomes a positioning axis. |
| M26 | Retract the servo tailstock to its set position (Romi GL manual 11.3.4). Backs the tailstock center off the part. |
| M27 | Advance the servo tailstock to the part (Romi GL manual 11.3.4). Advances the tailstock center to the part. Do not face to the axis or back off along it while it is there. |
| M30 | End of program and back to the start. |
| M31 | Retract the servo tailstock to its machine reference. Backs the tailstock center off the part. |
| M85 | High-torque brake; G0 C or M5 release it. Clamps the axis (brake) to cut without it turning. |
| M98 | Calls subprogram P (O number); L or the leading digits of P repeat it. |
| M99 | End of subprogram: returns to the block after the call. |
| Code | What it does |
|---|---|
| G00 | Rapid positioning at the machine's top speed, not cutting. Use it only in free air: a rapid into the stock is a crash. |
| G01 | Straight cut at feed F to the programmed point. |
| G02 | Clockwise arc to the end point, seen from the plane's positive axis. Center with I/J/K (from the start point) or radius R. |
| G03 | Counterclockwise arc to the end point. Center with I/J/K (from the start point) or radius R. |
| G04 | Dwell: waits P (milliseconds, no decimal point) or X/U (seconds) without moving. |
| G10 | Programmable data input (work offsets L2/L20). Writes offsets from the program: L2/L20 work offsets, L10–L13 tool offsets (lathe: P n wear, P 10000+n geometry). |
| G17 | Plane XY for arcs and cutter compensation (machining centers). |
| G18 | Plane ZX for arcs and compensation (the turning plane on lathes). |
| G19 | Plane YZ for arcs and compensation. |
| G20 | Units in inches. |
| G21 | Units in millimeters. |
| G28 | Return to the machine reference point through the programmed point (G91 G28 Z0 goes straight up from where it is). |
| G40 | Cancels cutter (or nose) radius compensation. Cancel with a move away from the part. |
| G41 | Cutter radius compensation to the left of the path (climb milling on outside contours). Radius from D (lathe: nose radius of the T offset). Start it with a straight move. |
| G42 | Cutter radius compensation to the right of the path. Radius from D (lathe: nose radius). Start it with a straight move. |
| G43 | Tool length compensation with offset H: Z positions are measured at the tool tip. A wrong H puts the tip too high or into the part. |
| G49 | Cancels tool length compensation. |
| G53 | Move in machine coordinates for this block only, ignoring work offsets and tool length. |
| G54 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G54.1 | Additional work offset (P1–P48). Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G55 | Work offset 2. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G56 | Work offset 3. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G57 | Work offset 4. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G58 | Work offset 5. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G59 | Work offset 6. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G65 | Macro call (G65 P n): runs program O n once, with the letters as arguments (A → #1, B → #2, …). |
| G80 | Cancels the active drilling cycle: the next X/Y no longer drills. |
| G81 | Drilling cycle: rapid to R, feed to Z, rapid out (G82 with a dwell P at the bottom). Repeats at each X/Y until G80. |
| G83 | Peck drilling: drills Q at a time and backs out to break or clear the chip, down to Z. |
| G84 | Tapping cycle: feed F must be the pitch × rpm (or the pitch with feed per revolution); the spindle reverses at the bottom. |
| G85 | Boring cycle: feed in to Z and out (how it comes out, feed or rapid, stopped or turning, depends on the code). |
| G90 | Absolute coordinates: every value is a position from the work zero. |
| G91 | Incremental coordinates: every value is a distance from where the tool is. |
| G94 | Feed F in mm/min. |
| G95 | Feed F in mm per spindle revolution (the usual on lathes). |
| G98 | After each hole the tool returns to the initial level (where the cycle started): safe over clamps. |
| G99 | After each hole the tool returns to the R level: faster, for a flat part without obstacles. |
| Code | What it does |
|---|---|
| M00 | Program stop: the machine stops until cycle start (to measure, clean chips, turn the part). |
| M01 | Optional stop: stops only with the M01 key on. |
| M02 | End of program. |
| M03 | Spindle on, clockwise (S sets the speed). |
| M04 | Spindle on, counterclockwise. |
| M05 | Spindle stop. |
| M06 | Tool change to the tool T. Go to a safe place first (G28 or the change position). |
| M08 | Coolant on. |
| M09 | Coolant off. |
| M30 | End of program and back to the start. |
| M98 | Calls subprogram P (O number); L or the leading digits of P repeat it. |
| M99 | End of subprogram: returns to the block after the call. |
| Code | What it does |
|---|---|
| G00 | Rapid positioning at the machine's top speed, not cutting. Use it only in free air: a rapid into the stock is a crash. |
| G01 | Straight cut at feed F to the programmed point. |
| G02 | Clockwise arc to the end point, seen from the plane's positive axis. Center with I/J/K (from the start point) or radius R. |
| G03 | Counterclockwise arc to the end point. Center with I/J/K (from the start point) or radius R. |
| G04 | Dwell: waits P (milliseconds, no decimal point) or X/U (seconds) without moving. |
| G09 | Exact stop. Control function with no effect on the path. |
| G10 | Set offsets (L2/L20 work, L10–L13 tool). Writes offsets from the program: L2/L20 work offsets, L10–L13 tool offsets (lathe: P n wear, P 10000+n geometry). |
| G12 | Circular pocket CW. Circle or pocket milling cycle (not drawn by the simulator yet). |
| G13 | Circular pocket CCW. Circle or pocket milling cycle (not drawn by the simulator yet). |
| G17 | Plane XY for arcs and cutter compensation (machining centers). |
| G18 | Plane ZX for arcs and compensation (the turning plane on lathes). |
| G19 | Plane YZ for arcs and compensation. |
| G20 | Units in inches. |
| G21 | Units in millimeters. |
| G28 | Return to the machine reference point through the programmed point (G91 G28 Z0 goes straight up from where it is). |
| G29 | Return from reference. Control function with no effect on the path. |
| G31 | Skip function. Control function with no effect on the path. |
| G35 | Tool diameter measure. Control function with no effect on the path. |
| G36 | Work offset probing. Control function with no effect on the path. |
| G37 | Tool length measure. Control function with no effect on the path. |
| G40 | Cancels cutter (or nose) radius compensation. Cancel with a move away from the part. |
| G41 | Cutter radius compensation to the left of the path (climb milling on outside contours). Radius from D (lathe: nose radius of the T offset). Start it with a straight move. |
| G42 | Cutter radius compensation to the right of the path. Radius from D (lathe: nose radius). Start it with a straight move. |
| G43 | Tool length compensation with offset H: Z positions are measured at the tool tip. A wrong H puts the tip too high or into the part. |
| G44 | Tool length compensation with offset H: Z positions are measured at the tool tip. A wrong H puts the tip too high or into the part. |
| G47 | Text engraving. Accepted by the control, but the simulator does not draw it yet: the path after it may differ from the machine. |
| G49 | Cancels tool length compensation. |
| G50 | Scaling cancel. Control function with no effect on the path. |
| G51 | Scaling. Accepted by the control, but the simulator does not draw it yet: the path after it may differ from the machine. |
| G52 | Local coordinate system shifted from the work offset (not drawn by the simulator yet). |
| G53 | Move in machine coordinates for this block only, ignoring work offsets and tool length. |
| G54 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G54.1 | Additional work offset P1–P99. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G55 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G56 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G57 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G58 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G59 | Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G61 | Exact stop modal. Control function with no effect on the path. |
| G64 | Exact stop cancel. Control function with no effect on the path. |
| G65 | Macro call (G65 P n): runs program O n once, with the letters as arguments (A → #1, B → #2, …). |
| G68 | Coordinate rotation by R degrees around the given point (not drawn by the simulator yet). |
| G69 | Coordinate rotation off. |
| G70 | Bolt hole circle. Accepted by the control, but the simulator does not draw it yet: the path after it may differ from the machine. |
| G71 | Bolt hole arc. Accepted by the control, but the simulator does not draw it yet: the path after it may differ from the machine. |
| G72 | Bolt holes along an angle. Accepted by the control, but the simulator does not draw it yet: the path after it may differ from the machine. |
| G73 | High-speed peck drilling. Peck drilling: drills Q at a time and backs out to break or clear the chip, down to Z. |
| G74 | Reverse tapping. Tapping cycle: feed F must be the pitch × rpm (or the pitch with feed per revolution); the spindle reverses at the bottom. |
| G76 | Fine boring. Boring cycle: feed in to Z and out (how it comes out, feed or rapid, stopped or turning, depends on the code). |
| G77 | Back boring. Boring cycle: feed in to Z and out (how it comes out, feed or rapid, stopped or turning, depends on the code). |
| G80 | Cancels the active drilling cycle: the next X/Y no longer drills. |
| G81 | Drilling cycle: rapid to R, feed to Z, rapid out (G82 with a dwell P at the bottom). Repeats at each X/Y until G80. |
| G82 | Spot drill with dwell. Drilling cycle: rapid to R, feed to Z, rapid out (G82 with a dwell P at the bottom). Repeats at each X/Y until G80. |
| G83 | Peck drilling: drills Q at a time and backs out to break or clear the chip, down to Z. |
| G84 | Tapping cycle: feed F must be the pitch × rpm (or the pitch with feed per revolution); the spindle reverses at the bottom. |
| G85 | Boring cycle: feed in to Z and out (how it comes out, feed or rapid, stopped or turning, depends on the code). |
| G86 | Boring cycle: feed in to Z and out (how it comes out, feed or rapid, stopped or turning, depends on the code). |
| G87 | Boring cycle: feed in to Z and out (how it comes out, feed or rapid, stopped or turning, depends on the code). |
| G88 | Boring cycle: feed in to Z and out (how it comes out, feed or rapid, stopped or turning, depends on the code). |
| G89 | Boring cycle: feed in to Z and out (how it comes out, feed or rapid, stopped or turning, depends on the code). |
| G90 | Absolute coordinates: every value is a position from the work zero. |
| G91 | Incremental coordinates: every value is a distance from where the tool is. |
| G92 | Sets the current position as the given coordinates (G92 on mills, G50 on system A lathes); on lathes it also limits the spindle speed with S. |
| G93 | Inverse time feed. Accepted by the control, but the simulator does not draw it yet: the path after it may differ from the machine. |
| G94 | Feed F in mm/min. |
| G95 | Feed F in mm per spindle revolution (the usual on lathes). |
| G98 | After each hole the tool returns to the initial level (where the cycle started): safe over clamps. |
| G99 | After each hole the tool returns to the R level: faster, for a flat part without obstacles. |
| G100 | Mirror image off. |
| G101 | Mirror image (not drawn by the simulator yet). |
| G103 | Block lookahead. Control function with no effect on the path. |
| G107 | Cylindrical interpolation: C is unrolled on the diameter, for slots around a shaft. |
| G110 | Work offset = G154 P1. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G111 | Work offset = G154 P2. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G112 | Work offset = G154 P3. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G113 | Work offset = G154 P4. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G114 | Work offset = G154 P5. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G115 | Work offset = G154 P6. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G116 | Work offset = G154 P7. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G117 | Work offset = G154 P8. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G118 | Work offset = G154 P9. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G119 | Work offset = G154 P10. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G120 | Work offset = G154 P11. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G121 | Work offset = G154 P12. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G122 | Work offset = G154 P13. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G123 | Work offset = G154 P14. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G124 | Work offset = G154 P15. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G125 | Work offset = G154 P16. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G126 | Work offset = G154 P17. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G127 | Work offset = G154 P18. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G128 | Work offset = G154 P19. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G129 | Work offset = G154 P20. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G141 | 3D cutter compensation. Accepted by the control, but the simulator does not draw it yet: the path after it may differ from the machine. |
| G150 | General purpose pocketing. Accepted by the control, but the simulator does not draw it yet: the path after it may differ from the machine. |
| G154 | Additional work offset P1–P99. Selects a work offset (part zero) from the OFFSET table: G54–G59, G54.1 P n (Haas G154 P n). |
| G187 | Smoothness / accuracy. Control function with no effect on the path. |
| G234 | Tool center point control (TCPC). Accepted by the control, but the simulator does not draw it yet: the path after it may differ from the machine. |
| G254 | Dynamic work offset (DWO). Accepted by the control, but the simulator does not draw it yet: the path after it may differ from the machine. |
| G255 | DWO cancel. Control function with no effect on the path. |
| G268 | Feature coordinates. Accepted by the control, but the simulator does not draw it yet: the path after it may differ from the machine. |
| G269 | Feature coordinates cancel. Control function with no effect on the path. |
| Code | What it does |
|---|---|
| M00 | Program stop: the machine stops until cycle start (to measure, clean chips, turn the part). |
| M01 | Optional stop: stops only with the M01 key on. |
| M02 | End of program. |
| M03 | Spindle on, clockwise (S sets the speed). |
| M04 | Spindle on, counterclockwise. |
| M05 | Spindle stop. |
| M06 | Tool change to the tool T. Go to a safe place first (G28 or the change position). |
| M07 | Shower coolant. Coolant on. |
| M08 | Coolant on. |
| M09 | Coolant off. |
| M10 | 4th axis brake. Clamps the axis (brake) to cut without it turning. |
| M11 | 4th axis brake release. Releases the axis brake. |
| M12 | 5th axis brake. Clamps the axis (brake) to cut without it turning. |
| M13 | 5th axis brake release. Releases the axis brake. |
| M19 | Spindle orient. Machine function with no effect on the path. |
| M30 | End of program and back to the start. |
| M31 | Chip conveyor forward. Machine function with no effect on the path. |
| M33 | Chip conveyor stop. Machine function with no effect on the path. |
| M34 | Coolant spigot down. Machine function with no effect on the path. |
| M35 | Coolant spigot up. Machine function with no effect on the path. |
| M41 | Low gear. Machine function with no effect on the path. |
| M42 | High gear. Machine function with no effect on the path. |
| M73 | Tool air blast on. Machine function with no effect on the path. |
| M74 | Tool air blast off. Machine function with no effect on the path. |
| M83 | Auto air jet on. Machine function with no effect on the path. |
| M84 | Auto air jet off. Machine function with no effect on the path. |
| M88 | Through-spindle coolant. Coolant on. |
| M89 | Through-spindle coolant off. Coolant off. |
| M95 | Sleep mode. Machine function with no effect on the path. |
| M96 | Jump if no input. Machine function with no effect on the path. |
| M97 | Local subprogram call (P = N number). Haas local subprogram: jumps to block N P of this same program and comes back at M99; L repeats. |
| M98 | Calls subprogram P (O number); L or the leading digits of P repeat it. |
| M99 | End of subprogram: returns to the block after the call. |
| M109 | Interactive user input. Machine function with no effect on the path. |