I don't know OpenGL well, but I can notice at least one mistake in translation: in function Fan_Render you call glPopMatrix three times at the end. In original there are two. Please check the code carefully, for sure the reason of lack of light is easy to find.