private void alEndings() {
    int old_k = k;
    
    if (word.length() < 4) return;
    if (endsIn('a', 'l')) {
      word.setLength(j + 1);
      k = j;
      if (lookup()) /* try just removing the -al */
      return;
      
      if (doubleC(j)) { /* allow for a doubled consonant */
        word.setLength(j);
        k = j - 1;
        if (lookup()) return;
        word.unsafeWrite(word.charAt(j - 1));
      }
      
      word.setLength(j + 1);
      word.unsafeWrite('e'); /* try removing the -al and adding -e */
      k = j + 1;
      if (lookup()) return;
      
      word.setLength(j + 1);
      word.append("um"); /* try converting -al to -um */
      /* (e.g., optimal - > optimum ) */
      k = j + 2;
      if (lookup()) return;
      
      word.setLength(j + 1);
      word.append("al"); /* restore the ending to the way it was */
      k = old_k;
      
      if ((j > 0) && (word.charAt(j - 1) == 'i') && (word.charAt(j) == 'c')) {
        word.setLength(j - 1); /* try removing -ical */
        k = j - 2;
        if (lookup()) return;
        
        word.setLength(j - 1);
        word.unsafeWrite('y');/* try turning -ical to -y (e.g., bibliographical) */
        k = j - 1;
        if (lookup()) return;
        
        word.setLength(j - 1);
        word.append("ic"); /* the default is to convert -ical to -ic */
        k = j;
        // nolookup() ... converting ical to ic means removing "al" which we
        // already tried
        // ERROR
        lookup();
        return;
      }
      
      if (word.charAt(j) == 'i') { /* sometimes -ial endings should be removed */
        word.setLength(j); /* (sometimes it gets turned into -y, but we */
        k = j - 1; /* aren't dealing with that case for now) */
        if (lookup()) return;
        word.append("ial");
        k = old_k;
        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