This fixes a similar issue with 'remove_substring' in both STRING_32 and STRING_8 remove_substring (start_index, end_index: INTEGER) -- Remove all characters from `start_index' -- to `end_index' inclusive. local l_count, nb_removed: INTEGER do nb_removed := end_index - start_index + 1 if nb_removed > 0 then l_count := count area.overlapping_move (start_index + nb_removed - 1, start_index - 1, l_count - end_index + 1) area.remove_tail (nb_removed) count := l_count - nb_removed reset_hash_codes end end