Tradutor de números romanos usando JavaScript

Consegui fazer isso funcionar sem usar sublinhado, mas como um desafio extra, estou tentando converter algarismos romanos em números arábicos usando sublinhado. Abaixo está a minha tentativa. Funciona, exceto no caso do número "próximo" ser maior que o número "atual". Realmente não sei por que, mas quando verifico se (próximo> = num), se o bloco nem está sendo executado?

var DIGIT_VALUES = {
  I: 1,
  V: 5,
  X: 10,
  L: 50,
  C: 100,
  D: 500,
  M: 1000
};

var translateRomanNumeral = function(roman) {
  // if it's not in the digit values object, return null
  for (var i = 0; i < roman.length; i++) {

    if (!(roman[i] in DIGIT_VALUES)) {
      return null;
    }

  }
  //with underscore:
 var romanTranslated =  reduce(roman, function(memo, letter, i) {
    var prev = DIGIT_VALUES[roman[i - 1]];
    var num = DIGIT_VALUES[letter];
    var next = DIGIT_VALUES[roman[i + 1]];
    if (next === undefined || next <= num) {
      return memo + num;
    }

Isso não está sendo executado por algum motivo:

    if (next >= num) {
      var diff = num - prev;
      console.log(diff);
      return memo + (diff - prev);
    }
  }, 0);
  // grab the first one

  //1
  // console.log(num);
return romanTranslated;


};

console.log(translateRomanNumeral("LXIV")); //returns 66 ---> should return 64
console.log(translateRomanNumeral("CI")); //working --> returns 101
console.log(translateRomanNumeral("MMMMCCL")); // working ---> returns 4250.
//works!

questionAnswers(2)

yourAnswerToTheQuestion