Running the same Coroutine several times makes a loop not run?

I am using the following code to change the alpha value of rooms in a house to the desired value. This Coroutine is being called once for each room in the house every time the player moves into a different area. When the player enters a new area however, the contents of the second loop seems not to run as much as it should (The rooms do not reach the AlphaF desired). When there is only one instance of the Coroutine, the loop runs fine, but I need all the rooms to fade at the same time. Putting the yield outside the second loop also has the rooms reach the correct final value, but there is no gradual fade of course. How do I fix this?

Note: list is a public List that is declared outside of all methods at the start of this script. GetChildRecursive loops through all children of room and adds all their children, etc. to ‘list’

public IEnumerator Fade(float AlphaF, SpriteRenderer room, int timeSteps) {     
    List<SpriteRenderer> tempList = list;
    float[] AlphaI = new float[tempList.Count];
    float[] alInc = new float[tempList.Count];
    int s = 0;
    for (int k = 0; k < tempList.Count; k++) {
        AlphaI ~~= tempList[k].color.a;~~ 

alInc = (AlphaF - AlphaI~~) / timeSteps;

for(int i = 0; i < timeSteps; i++) {

s = 0;
for (int k = 0; k < tempList.Count; k++) {
Color color = tempList[k].color;
color.a += alInc~~;
tempList[k].color = color;
yield return new WaitForEndOfFrame();


Nevermind, fixed the issue by not having the lists being set within the Coroutine