Cash Register problem: The cash accumulates to 335 therefore i get insuficient funds, which is the wrong output

**Hello all,

I made some code for the cash register challenge and when testing by calling the checkCashRegister function i get “insufficient funds”, when i should get following :
{status: “OPEN”, change: [[“QUARTER”, 0.5]]}

I tried to visualize my code with “http://www.pythontutor.com/javascript.html#mode=display” and i get the following log (picture below):

SO if the price accumulates like that, what could be wrong in my code?
I ran out of ideas, so I appreciate any amount of help. Thx in advance. **

Your code so far

  closed: 'CLOSED',
  insufficientFunds: 'INSUFFICIENT_FUNDS',
  open: 'OPEN'
};

var currency = [
  { name: "ONE HUNDRED", val: 100 },
  { name: "TWENTY", val: 20 },
  { name: "TEN", val: 10 },
  { name: "FIVE", val: 5 },
  { name: "ONE", val: 1 },
  { name: "QUARTER", val: 0.25 },
  { name: "DIME", val: 0.1 },
  { name: "NICKEL", val: 0.05 },
  { name: "PENNY", val: 0.01 }
];

function checkCashRegister (price, cash, cid) {
  let cashReg = { status: null, change: [] };
  var change = cash - price;
  
  var changeAv = getTotalCashReg(cid);
  cashReg.status = getTotalCashRegisterStatus(change, changeAv);

  if (cashReg.status === status.insufficientFunds) {
    cashReg.change = [];

    return cashReg;
  }
  cashReg.change = getCustomerChange(change, cid);

  if (change > getTotalCashReg(cashReg.change)) {
    cashReg.status = status.insufficientFunds;
    cashReg.change = [];
  }

  if (cashReg.status === status.closed) {
    cashReg.change = [...cid];
  }

  console.log(cashReg.status);

  return cashReg;
}

function getCustomerChange (change, changeinDrawer) {
  const changeAr = [];
  

  for (let i = changeinDrawer.length - 1; i >= 0; i--) {
    const coinName = changeinDrawer[i][0];
    const coinTotal = changeinDrawer[i][1];
    const coinValue = currency[coinName];

    let coinAmount = (coinTotal / coinValue);
    let coinsToReturn = 0;

    while (change >= coinValue && coinAmount > 0) {
      change -= coinValue;
      coinAmount--;
      coinsToReturn++;
    }
    if (coinsToReturn > 0) {
      changeAr.push([coinName, coinsToReturn * coinValue]);
    }
  }

  return changeAr;
}

function getTotalCashRegisterStatus (change, changeAv) {
  if (Number(change) > Number(changeAv)) {
    return status.insufficientFunds;
  } else if (Number(change) > Number(changeAv)) {
    return status.open;
  } else {
    return status.closed;
  }
}

function getTotalCashReg (cid) {
  let total = 0;

  for (let change of cid) {
    let cv = change[1];
    total += cv;
  }
  return total;
}

console.log(checkCashRegister(19.5, 20, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.1], ['QUARTER', 4.25], ['ONE', 90], ['FIVE', 55], ['TEN', 20], ['TWENTY', 60], ['ONE HUNDRED', 100]]));

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36.

Link to the challenge:

In this function:

function getTotalCashRegisterStatus (change, changeAv) {
  if (Number(change) > Number(changeAv)) {
    return status.insufficientFunds;
  } else if (Number(change) > Number(changeAv)) {
    return status.open;
  } else {
    return status.closed;
  }
}

Where is the status coming from / what are you expecting to return? When testing it, it seems like it only returns undefined since status is not a defined object.