where it is working there are the same number of records in the update and join tables (one record in each table). Where it isn't working, the join table only has a few matches in the update table
What you need to do is to add some logic to deal with the situation where there are no matching keys in the lut, although I'm currious since you should be getting an error that says something to the effect of "key error - key not found". Like Matt said, I think you are getting issues with Null values (which in a cursor come out as a value of None.So for example:lutDict = dict([(r[0], (r[1], r[2])) for r in arcpy.da.SearchCursor(lutTbl, ["SOURCEJOINFIELD","SOURCEFIELD1","SOURCEFIELD2"])]) updateRows = arcpy.da.UpdateCursor(targetTbl, ["TARGETJOINFIELD","TARGETFIELD1","TARGFETFIELD2"]) for updateRow in updateRows: joinFieldValue = updateRow[0] if joinFieldValue in lutDict and joinFieldValue != None: updateRow[1] = updateRow[1] + lutDict[joinFieldValue][0] updateRow[2] = updateRow[2] * lutDict[joinFieldValue][1] else: updateRow[1] = -9999 updateRow[2] = -9999 updateRows.updateRow(updateRow) del updateRow, updateRows