I found the lib you are using. A few things...
The -127 is a defined error value that is thrown when the device is considered disconnected. In DallasTemperature.h
// Error Codes
#define DEVICE_DISCONNECTED -127
-127 is outside the range of the device so you can just toss that value like so...untested.
if (tempc == -127)
Serial.println("Bad temp read");
Particle.publish("temperature_Hot_Water_Tank", String(tempc) + "°C");
getTemp() function in DallasTemperature.cpp is what the getTempCByIndex() leads to. There you can see in the comments that if sensor.isConnected(DeviceID); is false OR !sensor.isConnected(DeviceID); it will return the
DEVICE_DISCONNECTED value that is defined in DallasTemperature.h.