Warm the milk to 115°F. If you use the microwave to warm the milk, put a small wooden spoon in the milk to break the surface tension and prevent it from exploding.
Place the bread flour in the bowl of a stand mixer. Add the salt and yeast on opposite sides of the bowl, then stir in each one with your finger.
Mix the butter and lard into the flour with the paddle attachment until the mixture resembles fine breadcrumbs.
Stir in the sugar, egg, saffron mixture, lemon and orange zest, and half of the milk. Mix on low speed to start bringing the dough together, gradually adding more milk as needed to create a soft, somewhat sticky dough. Keep mixing until all the flour is picked up from the bottom of the bowl.
Turn out the dough onto a floured surface and knead vigorously for about 15 minutes, until the dough is very stretchy, silky smooth, is no longer sticking to the work surface, and has a sheen on its surface. Test the dough by stretching a lump of it between the thumb and forefinger of each hand. The dough should stretch until it's translucent without breaking. If it breaks, knead a minute longer and check again.
Shape the dough into a ball, place in a large buttered bowl, and cover tightly with plastic wrap. Let the dough prove in a warm place until almost doubled, about 2 hours. Alternatively, let the dough prove in the fridge overnight. (Please be aware that this dough rises very slowly because it's heavy, and it won't rise quickly or double in size like lighter white bread doughs do.)