Per poter risponedere occorre sapere cosa sono e che valori possono avere i parametri passati alla funzione.

Ci sono sicuramente delle cose migliorabili, e ci sono errori di logica, che forse non pregiudicano il funzionamento ma che sarebbe bene togliere.
Esempio: SVALORE e` l'indice di una matrice: come tale deve essere intero; un float potrebbe darti risultati "strani" (ad esempio l'intero 2 puo` diventare in float 1.99999998 che viene quindi troncato in 1).
ON_OFF secondologica dovrebbe essere un booleano (avere valori true e false), ma tu ci metti un intero (mi pare)