anchor.diff:      _ -> % Error reading config or input value, terminate writing to display
         update_lcd_data(I2cRef, Backlight, Config, Inputs, 0, 0, NewValue, NewStatus)
     end.
  +
  +
  +%
  +% Write the Input string to the display
  +%
  +-spec display_str(I2cRef :: pid(),
  +                  Backlight :: boolean(),
  +                  StartRow :: integer(),
  +                  StartCol :: integer(),
  +                  FieldWidth :: integer(),
  +                  InputStr :: string()) -> string().
  +
  +display_str(I2cRef, Backlight, StartRow, StartCol, FieldWidth, InputStr) ->
  +  case StartRow of
  +    1 -> RowAddr = ?LINE_1;
  +    2 -> RowAddr = ?LINE_2;
  +    3 -> RowAddr = ?LINE_3;
  +    4 -> RowAddr = ?LINE_4
  +  end,
  +
  +  RowColAddr = RowAddr + (StartCol - 1),
  +  set_data_addr(I2cRef, Backlight, RowColAddr),
  +
  +  % Clip or Pad string with spaces to fill field width
  +  DisplayStr = string:left(InputStr, FieldWidth),
  +  lists:map(fun(Char) -> write_data(I2cRef, Backlight, Char) end, DisplayStr),
  +  DisplayStr.
   
   
   clear_display(I2cRef, Backlight) ->
  
positive.code:   {Value, Status};
  
  update_lcd_data(I2cRef, Backlight, Config, Inputs, NumOfInputs, InputNum, Value, _Status) ->
    case config_utils:get_integer_range(Config, {start_rows, InputNum}, 1, 4) of
      {ok, StartRow} ->
  
        case config_utils:get_integer_range(Config, {start_cols, InputNum}, 1, 20) of
          {ok, StartCol} ->
  
            case input_utils:get_string(Inputs, {inputs, InputNum}) of
              {ok, InputStr} ->
                case StartRow of
                  1 -> RowAddr = ?LINE_1;
                  2 -> RowAddr = ?LINE_2;
                  3 -> RowAddr = ?LINE_3;
                  4 -> RowAddr = ?LINE_4
                end,
  
                RowColAddr = RowAddr + (StartCol - 1),
                set_data_addr(I2cRef, Backlight, RowColAddr),
                lists:map(fun(Char) -> write_data(I2cRef, Backlight, Char) end, InputStr),
                
                NewValue = Value ++ " " ++ InputStr,
                NewStatus = normal;
  
              {error, Reason} ->
                {NewValue, NewStatus} = input_utils:log_error(Config, inputs, Reason)
            end;
          {error, Reason} ->
            {NewValue, NewStatus} = config_utils:log_error(Config, start_cols, Reason)
  
negative.code:   {ClearScr, Backlight}.
  
  
  %
  % Read input string(s) and update LCD
  %
  
  update_lcd_data(I2cRef, Backlight, Config, Inputs, NumOfInputs) ->
    update_lcd_data(I2cRef, Backlight, Config, Inputs, NumOfInputs, 1, "", normal).
  