Work Flow

Work Flow

I have a subform inside a form
I have a workflow on the form that is suppose to populate the Full Fault Box with input in the other fields. The script that I wrote is putting null in the box but it should never put null. Can someone tell me where I have gone wrong in my script. 
if(row.Fault = "Nil Faults" && row.Other == "")
{
row.Full_Fault="Nil Faults In Roll";
}
else if(row.Other != "")
{
row.Full_Fault=row.Other + if(row.Allowance_Give != "- Allowance Given","- Allowance Given","");
}
if(row.Fault != "Nil Faults" && row.Fault != "")
{
row.Full_Fault=row.Fault + " " + if(row.Number_Of_Faults >= 1," x" + " " + row.Number_Of_Faults,"") + if(row.Starting_At_LM >= 1," @" + " " + row.Starting_At_LM + "m" + ""," ") + if(row.Fault_Length >= 1," For" + " " + row.Fault_Length + "" + row.Unit_Of_Measure,"" + if(row.Allowance_Give != "- Allowance Given","- Allowance Given","") + " " + row.Fault_Location);
}


I also have a function that list this. The function is working like it is suppose to:

string csp_entry.FullFault(string Fault, int Number_Of_Faults, string Fault_Location, float Starting_At_LM, string Unit_Of_Measure1, float Fault_Length, string Unit_Of_Measure, string Allowance_Give, string Other)
{
var_full_fault = "";
if(input.Fault == "Nil Faults" && input.Other == "")
{
var_full_fault = "Nil Faults In Roll";
}
else if(input.Other != "")
{
var_full_fault = Other + if(input.Allowance_Give != null," - Allowance Given","");
}
else if(input.Fault != "" && input.Fault != "NilFaults")
{
varNumber_Of_Faults = 0.0;
if(input.Number_Of_Faults != null)
{
varNumber_Of_Faults = Number_Of_Faults;
}
varFault_Size = 0.0;
if(input.varFault_Size != null)
{
varFault_Size = Fault_Location;
}
varStarting_At_LM = 0.0;
if(input.Starting_At_LM != null)
{
varStarting_At_LM = Starting_At_LM;
}
varFault_Length = 0.0;
if(input.Fault_Length != null)
{
varFault_Length = Fault_Length;
}
var_full_fault = Fault + " " + if(varNumber_Of_Faults > 0.01," x" + " " + varNumber_Of_Faults,"") + if(varStarting_At_LM > 0.01," @" + " " + varStarting_At_LM + Unit_Of_Measure1," ") + if(varFault_Length > 0.01," For" + " " + varFault_Length + "" + Unit_Of_Measure,"") + if(input.Allowance_Give != null && Allowance_Give != ""," - " + Allowance_Give,"" + "," + " " + input.Fault_Location);
}
return var_full_fault;
}

So what am I missing here?