def readVSOP(fileName):
    inFile = open(fileName,'r')
    
    import fortranformat as ff
    formatHeader = ff.FortranRecordReader('(40x,I3, 16x,I1,I8)')         # Header
    formatBody   = ff.FortranRecordReader('(79x,F18.11,F14.11,F20.11)')  # Body
    
    lonTerms=[]; latTerms=[]; radTerms=[]
    
    for iBlock in range(3*6):  # 3 variables (l,b,r), up to 6 powers (0-5)
        line = inFile.readline()
        var,power,nTerm = formatHeader.read(line)
        #print(var,power,nTerm)
        if line == '': break  # EoF
        
        for iLine in range(nTerm):
            line = inFile.readline()
            a,b,c = formatBody.read(line)
            #print(iLine, var,power, a,b,c)
            
            if var == 1: lonTerms.append([power, a,b,c])  # var=1: ecl. lon.
            if var == 2: latTerms.append([power, a,b,c])  # var=2: ecl. lat.
            if var == 3: radTerms.append([power, a,b,c])  # var=3: distance

    return lonTerms,latTerms,radTerms
