{
  "category": "Engineering functions",
  "display_name": "GESTEP",
  "entry_kind": "built_in_function",
  "eval_api": {
    "method": "POST",
    "url": "https://handbook.dnacalc.com/api/eval"
  },
  "function_id": "FUNC.GESTEP",
  "implementation_state": {
    "answer_bank": {
      "excel_builds": [
        "20430"
      ],
      "larger_numeric": 0,
      "last_bit": 0,
      "matched": 1092,
      "other_mismatch": 0,
      "refused": 4,
      "rows": 1096,
      "unread": 0,
      "worst_ulp": 0
    },
    "detail": "Of 1,100 recorded answers (1,096 in the answer bank and 4 workbook cells), 4 do not match: 4 are refused.",
    "dnacalc_commit": "9e1884369a678158dd82d3d74188daf986995e87",
    "in_catalogue": true,
    "state": "differs",
    "state_label": "Known larger differences",
    "summary": "Refuses 4 of 1,100 recorded calls; the rest match",
    "workbook_corpus": {
      "cells": 4,
      "matched": 4
    }
  },
  "implementations": [
    {
      "commit": "9e1884369a678158dd82d3d74188daf986995e87",
      "flavour": "excel-compatibility-candidate",
      "language": "Rust",
      "name": "CalcFunc",
      "own_code": [
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/engineering.rs#L270-L274",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/ported/gestep_fn.rs#L3-L5"
      ],
      "repository": "https://github.com/DnaCalc/DnaCalc",
      "shared_code": [],
      "source": "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/engineering.rs#L270-L274",
      "state": "differs",
      "suite": null,
      "summary": "Refuses 4 of 1,100 recorded calls; the rest match"
    }
  ],
  "json_url": "https://handbook.dnacalc.com/api/functions/FUNC.GESTEP.json",
  "name": "GESTEP",
  "notes": [
    {
      "basis": "16 recorded DELTA and GESTEP formula readings, 8 readings each with errors and text held in cells, and the ERF companions on the same sheets. GESTEP gave the same pattern as DELTA in every pair.",
      "documentation": null,
      "evidence": [
        {
          "commit": "287c5b9a3bec81ea96f12ad485f18a0d4b729063",
          "locator": "delivered_fn4_scalar_logical_positions_and_error_order",
          "note": "recorded answers pinned",
          "path": "apps/dna-onecalc/tests/acceptance.rs",
          "repository": "DnaCalc"
        },
        {
          "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
          "locator": "sheets qa001 to qa008, qa013 to qa020, qa109 to qa116",
          "note": "recorded readings",
          "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-arguments.capture.json",
          "repository": "DnaCalc"
        },
        {
          "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
          "locator": null,
          "note": "8 recorded readings",
          "path": "crates/calc-func/tests/captures/fn4_questions/DELTA.reading.json",
          "repository": "DnaCalc"
        },
        {
          "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
          "locator": null,
          "note": "8 recorded readings",
          "path": "crates/calc-func/tests/captures/fn4_questions/GESTEP.reading.json",
          "repository": "DnaCalc"
        }
      ],
      "functions": [
        "FUNC.DELTA",
        "FUNC.ERF",
        "FUNC.GESTEP"
      ],
      "inferred": null,
      "kind": "quirk",
      "note_id": "FN-DELTA-001",
      "open": [],
      "recorded_on": "2026-11-04",
      "repros": [
        {
          "call": "=DELTA(TRUE,#REF!)",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#REF!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qa007, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-arguments.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=DELTA(#REF!,TRUE)",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qa008, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-arguments.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=GESTEP(TRUE,#REF!)",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#REF!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qa019, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-arguments.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=GESTEP(#REF!,TRUE)",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qa020, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-arguments.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=ERF(TRUE,#REF!)",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qa115, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-arguments.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=ERF(#REF!,TRUE)",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#REF!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qa116, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-arguments.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "DELTA(A1, A2)",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#REF!",
            "kind": "error"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number1",
              "value": {
                "bits": null,
                "display": "#N/A",
                "kind": "error"
              }
            },
            {
              "name": "number2",
              "value": {
                "bits": null,
                "display": "#REF!",
                "kind": "error"
              }
            }
          ],
          "recorded_in": "Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "fn7-DELTA-argument-order-7",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/DELTA.reading.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=DELTA(B1,0)",
          "correct": null,
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "B1",
              "value": {
                "bits": null,
                "display": "TRUE",
                "kind": "logical"
              }
            }
          ],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qa003, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-arguments.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=DELTA(B1,0)",
          "correct": null,
          "excel": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "B1",
              "value": {
                "bits": null,
                "display": "(empty cell)",
                "kind": "blank"
              }
            }
          ],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "sheet qa004, row 20, column 10",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/functions-fn4-arguments.capture.json",
            "repository": "DnaCalc"
          }
        }
      ],
      "schema": "efh.function-note/v1",
      "statement": "When both arguments of DELTA or GESTEP are bad, the error comes from the second one: DELTA(TRUE,#REF!) is #REF! and DELTA(#REF!,TRUE) is #VALUE!. With two errors, DELTA gives the second. ERF reads left to right: ERF(TRUE,#REF!) is #VALUE! and ERF(#REF!,TRUE) is #REF!. A logical is rejected in either position of these functions, whether typed or held in a cell: DELTA(TRUE,0) and DELTA(2,TRUE) are #VALUE!, and DELTA(B1,0) with TRUE in B1 is #VALUE!, while an empty B1 reads as 0 and gives 1.",
      "status": "measured",
      "title": "DELTA and GESTEP read their second argument first"
    }
  ],
  "schema": "efh.function-reference/v1",
  "section_order": [
    "what-it-does",
    "try-it",
    "quirks",
    "how-to-implement",
    "version-differences",
    "alternatives"
  ],
  "sections": {
    "alternatives": "\n[DELTA](FUNC.DELTA.md) identifies equal values; [COUNTIF](FUNC.COUNTIF.md) counts values at or above a threshold; [IF](FUNC.IF.md) selects arbitrary results.\n\n\n\n\n",
    "how-to-implement": "\nFirst read the optional threshold, using zero if omitted. Apply the nonlogical numeric conversion and return its error before reading the first number. Read the first number under the same rules. This is the second-argument-first order retained in the recorded controls.\n\nEvaluate `number>=step` and map the result to numeric one or zero. In the example `6>=6` selects one. Preserve errors and failed conversion separately from a valid false comparison; an implementation that catches every failure and returns zero loses this distinction. Array lifting, if supplied by the host, must preserve its own error ordering.\n\n\n",
    "quirks": "\nThe recorded wrapper reads the threshold before the first number. `GESTEP(TRUE,#REF!)` therefore returns `#REF!`, while `GESTEP(#REF!,TRUE)` returns `#VALUE!`. A logical is rejected in either slot, including through a cell reference; a blank cell instead reads as zero.\n\nThe represented number at the threshold gives one. There is no tolerance band. DELTA tests equality alone and does not include larger values.\n\n\n",
    "sources": "\n- [FN-DELTA-001](../notes/FN-DELTA-001.json): scalar read order, logical rejection and blank-cell controls.\n- [Microsoft: GESTEP function](https://support.microsoft.com/en-us/excel/functions/gestep-function), opened 6 November 2026; syntax, documented argument rules and errors.\n- [DnaCalc implementation](https://github.com/DnaCalc/DnaCalc/blob/da3ecc4fb19a3a5529708c311d0e8f05688ac165/crates/calc-func/src/catalogue/engineering.rs); implementation steps and the limits identified in the text.\n\n",
    "try-it": "\n`=GESTEP(6,6)` returns `1`; `=GESTEP(5,6)` returns `0`; `=GESTEP(-0.5)` returns `0`. The threshold itself is included.\n\n\n",
    "version-differences": "The recorded environments below distinguish a reading from a same-input comparison. Counts describe captured inputs in each environment; overlapping captures and comparisons are not totals of unique worksheet calls.\n\n| Excel 16.0 build | Platform and CPU | Captured inputs |\n|---|---|---:|\n| 20430 | Windows, 64-bit, CPU not recorded | 1,096 |\n\nThe record contains no same-input comparison between these environments. Reading different inputs on different builds does not establish either a version change or cross-build agreement.\n\n[Recorded environments and comparison details](https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.GESTEP.json).",
    "what-it-does": "\n`GESTEP(number, [step])` returns numeric one when `number>=step`, and zero otherwise. The omitted threshold is zero. Equality belongs to the one-result side of the boundary.\n\n\n"
  },
  "signature": {
    "display": "GESTEP(number, [step])",
    "parameters": [
      {
        "description": null,
        "name": "number",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "step",
        "optional": true,
        "repeats": false
      }
    ],
    "trailing_repeats": false
  },
  "sources": {
    "metadata": {
      "admission": {
        "label": "implemented",
        "reason": null
      },
      "arity": {
        "max": 2,
        "min": 1
      },
      "category": "Engineering functions",
      "classification": {
        "arg_preparation_profile": "ValuesOnlyPreAdapter",
        "coercion_lift_profile": "Custom",
        "determinism_class": "Deterministic",
        "error_collapse_profile": "None",
        "fec_dependency_profile": "None",
        "host_interaction_class": "None",
        "kernel_signature_class": "NumsToNum",
        "rich_value_usage": "RichBlind",
        "surface_fec_dependency_profile": "RefOnly",
        "thread_safety_class": "SafePure",
        "volatility_class": "NonVolatile"
      },
      "descriptions": {
        "long": null,
        "short": "1 when a number is at least the step value, otherwise 0",
        "short_source": "dna-calc-own"
      },
      "docs": {
        "english_description": "Tests whether a number is greater than a threshold value",
        "microsoft_url": "https://support.microsoft.com/en-us/office/gestep-function-f37e7d2a-41da-4129-be95-640883fca9df"
      },
      "entry_kind": "built_in_function",
      "localized_family_names": null,
      "localized_names": [
        {
          "locale": "ar-SA",
          "name": "GESTEP"
        },
        {
          "locale": "bg-BG",
          "name": "GESTEP"
        },
        {
          "locale": "cs-CZ",
          "name": "GESTEP"
        },
        {
          "locale": "da-DK",
          "name": "GETRIN"
        },
        {
          "locale": "de-DE",
          "name": "GESTEP"
        },
        {
          "locale": "el-GR",
          "name": "GESTEP"
        },
        {
          "locale": "en-AU",
          "name": "GESTEP"
        },
        {
          "locale": "en-GB",
          "name": "GESTEP"
        },
        {
          "locale": "en-US",
          "name": "GESTEP"
        },
        {
          "locale": "es-ES",
          "name": "MAYOR.O.IGUAL"
        },
        {
          "locale": "et-EE",
          "name": "GESTEP"
        },
        {
          "locale": "fi-FI",
          "name": "RAJA"
        },
        {
          "locale": "fr-FR",
          "name": "SUP.SEUIL*"
        },
        {
          "locale": "he-IL",
          "name": "GESTEP"
        },
        {
          "locale": "hr-HR",
          "name": "GESTEP"
        },
        {
          "locale": "hu-HU",
          "name": "KÜSZÖBNÉL.NAGYOBB"
        },
        {
          "locale": "id-ID",
          "name": "GESTEP"
        },
        {
          "locale": "it-IT",
          "name": "GESTEP"
        },
        {
          "locale": "ja-JP",
          "name": "GESTEP"
        },
        {
          "locale": "ko-KR",
          "name": "GESTEP"
        },
        {
          "locale": "lt-LT",
          "name": "GESTEP"
        },
        {
          "locale": "lv-LV",
          "name": "GESTEP"
        },
        {
          "locale": "nb-NO",
          "name": "GRENSEVERDI"
        },
        {
          "locale": "nl-NL",
          "name": "GROTER.DAN"
        },
        {
          "locale": "pl-PL",
          "name": "SPRAWDŹ.PRÓG"
        },
        {
          "locale": "pt-BR",
          "name": "GESTEP"
        },
        {
          "locale": "pt-PT",
          "name": "DEGRAU"
        },
        {
          "locale": "ro-RO",
          "name": "GESTEP"
        },
        {
          "locale": "ru-RU",
          "name": "ПОРОГ"
        },
        {
          "locale": "sk-SK",
          "name": "GESTEP"
        },
        {
          "locale": "sl-SI",
          "name": "GESTEP"
        },
        {
          "locale": "sr-Latn-RS",
          "name": "GESTEP"
        },
        {
          "locale": "sv-SE",
          "name": "SLSTEG"
        },
        {
          "locale": "th-TH",
          "name": "GESTEP"
        },
        {
          "locale": "tr-TR",
          "name": "BESINIR işlevi"
        },
        {
          "locale": "uk-UA",
          "name": "GESTEP"
        },
        {
          "locale": "vi-VN",
          "name": "GESTEP"
        },
        {
          "locale": "zh-CN",
          "name": "GESTEP"
        },
        {
          "locale": "zh-HK",
          "name": "GESTEP"
        },
        {
          "locale": "zh-TW",
          "name": "GESTEP"
        }
      ],
      "signature": {
        "display": "GESTEP(number, [step])",
        "parameters": [
          {
            "description": null,
            "name": "number",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "step",
            "optional": true,
            "repeats": false
          }
        ],
        "trailing_repeats": false
      },
      "surface_name": "GESTEP",
      "version_marker": null,
      "xlcall": {
        "code": "419",
        "symbol": "xlfGestep"
      }
    },
    "microsoft": "https://support.microsoft.com/en-us/office/gestep-function-f37e7d2a-41da-4129-be95-640883fca9df"
  },
  "try_it": {
    "formula": "=GESTEP(6,6)"
  },
  "url": "https://handbook.dnacalc.com/functions/GESTEP.html",
  "variants": [],
  "versions": [
    {
      "behaviour": "=GESTEP(TRUE,#REF!) returned #REF!. =GESTEP(#REF!,TRUE) returned #VALUE!. Inputs were supplied through formula literals. These are controls from this environment, not a same-input comparison with another build.",
      "excel_build": "16.0.20527.20088",
      "observations": [
        {
          "call": "=GESTEP(TRUE,#REF!)",
          "excel": {
            "bits": null,
            "display": "#REF!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=GESTEP(#REF!,TRUE)",
          "excel": {
            "bits": null,
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        }
      ],
      "platform": "Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/3345a87/content/notes/FN-DELTA-001.json"
      ]
    },
    {
      "behaviour": "1,096 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build.",
      "excel_build": "16.0 build 20430",
      "platform": "Windows, 64-bit, CPU not recorded",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.GESTEP.json"
      ]
    }
  ]
}