You are using a sub-template as a function argument, something that frequently breaks things. That is why
the documentation for single function mode says you are not supposed to do that.
You should use
general program mode. In GPM, your last template would be something close to:
Code:
program:
contains(field('tags'), 'By_series',
template('-Series-/{series}/{series_index:0>2s} - {title} [{authors}]'),
template('{authors:.1}/{authors}{series:| - |/}{series_index:0>2s} - {title}'))
I changed the second template so that it does not use a subtemplate for series_index.