Ingrese los valores propios para combinarlos

Tengo este fluido combinado:

private val subject: BehaviorSubject<Int> = BehaviorSubject.create() Flowable.combineLatest( materialA, materialB, subject.toFlowable(LATEST), Function3 { ma, mb, index -> if(index == 0) ... else if(index ==1) ... else ... } subject.onNext(99) 

Básicamente, quiero observar los cambios de DB en ambos materiales y combinarlos para mostrar algunos datos al usuario. En ocasiones, necesito usar la última salida y hacer una combinación diferente (cálculo pesado). Es por eso que hice que el index una fuente para el combinelatest . ¿Es este un enfoque válido o hay alguna mejor alternativa?

PD. Necesito poder solicitar una combinación diferente en el momento que quiera (es decir, no utilicé Flowable.just ()) y me gustaría evitar save el estado fuera de la cadena obs.