yes, now that you mention it I think is better just to iterate over all objects instead and convert all keywords to lowercase like this:
results = catalog()
for b in results:
obj = b.getObject()
keywords = list(obj.Subject())
lowercase = [k.lower() for k in keywords]
if keywords == lowercase:
continue
obj.setSubject(tuple(lowercase))
catalog.catalog_object(obj, idxs=['Subject'], update_metadata=False)
that has to be faster because I'm doing less catalog reindexes.
so, there no other way? no hidden catalog methods for doing this?