Mix together all the marination ingredients except fish. Taste the marinade to check the spice and salt. Marinade the fish and set aside till the rice gets cooked. Soak saffron in warm milk. Set aside. Wash Basmati rice under running water until the water runs clear. Then soak for at least 20-45 minutes. Drain the rice to a colander. Bring 6-8 cup water to a boil in a large pot. Pour 1 tsp oil and then add salt. Add the drained rice and cook till aldente. Don’t make the rice mushy, it must be cooked fully but must be firm and grainy. Drain the cooked rice to a colander. Fry the fish in little oil from both the sides till the fish gets cooked and the masala turns golden. Set this aside along with any stock or oil left in the pan. Add more oil to the pan and fry onions till lightly golden. Stir often while you fry. Set aside a few for garnish. To the same pan, add spices and fry them for a minute. Add ginger garlic paste and cook until the raw smell goes off. If using tomato add it now and cook until it turns soft. Add Biryani masala, coriander masala, red chili powder and fry quickly. Pour yogurt and stir. Cook till the mixture thickens. Set this aside. Add half of the rice to the biryani pot, layer the gravy, add chopped mint and coriander leaves. Layer the fried fish along with the oily stock if any. Layer the rice again and then sprinkle coriander leaves, mint leaves and fried onions. Pour the saffron milk. Sprinkle kewra water. Seal it with a foil and put it on a hot tawa. Cook on high flame for minutes and very low flame for 10 minutes. Allow fish biryani to rest for 15 minutes before serving.