 			int postneuron = postsyn_neuron[idx];
 			if (neuron_in_plasticity_set[postneuron]){
 				float division_value = weight_divisor[postneuron];
-				current_weight[idx] = current_weight[idx] / division_value;
+				//if (division_value != 1.0)
+				//printf("%f, %f, %f wat \n", division_value, current_weight[idx], (current_weight[idx] / division_value));
+				if (division_value != 1.0)
+					current_weight[idx] /= division_value;
 			}
 			indx += blockDim.x * gridDim.x;
 		}

		while (idx < total_number_of_neurons) {
			if (neuron_in_plasticity_set[idx])
			{
				weight_divisor[idx] = sqrtf(sum_squared_afferent_values[idx] + afferent_weight_change_updater[idx]) / sqrtf(sum_squared_afferent_values[idx]);
			}
			idx += blockDim.x * gridDim.x;		
		}
	}



			// Get the current synapse index
			int idx = d_plastic_synapse_indices[indx];
			int post_id = postsyn_ids[idx];
			float weight_change = current_weight[idx] - initial_weights[indx];
			if (weight_change != 0.0){
				float update_value = weight_change*weight_change + 2.0f*initial_weights[indx]*weight_change;
				atomicAdd(&afferent_weight_change_updater[post_id], update_value);
			}
			indx += blockDim.x * gridDim.x;
