private void ncyEndings() {
    if (endsIn('n', 'c', 'y')) {
      if (!((word.charAt(j) == 'e') || (word.charAt(j) == 'a'))) return;
      word.setCharAt(j + 2, 't'); /* try converting -ncy to -nt */
      word.setLength(j + 3);
      k = j + 2;
      
      if (lookup()) return;
      
      word.setCharAt(j + 2, 'c'); /* the default is to convert it to -nce */
      word.unsafeWrite('e');
      k = j + 3;
      lookup();
    }
    return;
  }
*
YCS: this was the one place where lookup was not followed by return.
So restructure it. if ((j>0)&&(lookup(word.toString())) &&
!((word.charAt(j) == 's') && (word.charAt(j-1) == 's'))) return;
***
linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemmer.java